1 // Copyright 2010-2021 Google LLC 2 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // you may not use this file except in compliance with the License. 4 // You may obtain a copy of the License at 5 // 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 #ifndef OR_TOOLS_MATH_OPT_VALIDATORS_SCALAR_VALIDATOR_H_ 15 #define OR_TOOLS_MATH_OPT_VALIDATORS_SCALAR_VALIDATOR_H_ 16 17 #include "absl/status/status.h" 18 namespace operations_research { 19 namespace math_opt { 20 21 absl::Status CheckScalarNoNanNoInf(const double d); 22 23 struct DoubleOptions { 24 bool allow_positive_infinity = true; 25 bool allow_negative_infinity = true; 26 bool allow_negative = true; 27 bool allow_positive = true; 28 }; 29 30 // Checks value is not NaN and satisfies the additional conditions in options. 31 absl::Status CheckScalar(const double value, const DoubleOptions& options); 32 33 } // namespace math_opt 34 } // namespace operations_research 35 #endif // OR_TOOLS_MATH_OPT_VALIDATORS_SCALAR_VALIDATOR_H_ 36