21constexpr double kInf = std::numeric_limits<double>::infinity();
24 const double relative_gap_limit) {
54 if (std::isnan(objective_value)) {
55 return objective_value;
58 if (relative_gap_limit ==
kInf) {
61 if (!std::isfinite(objective_value)) {
62 return objective_value;
65 const double non_negative_relative_gap_limit =
66 std::fmax(0.0, relative_gap_limit);
68 non_negative_relative_gap_limit *
69 (std::abs(objective_value) + std::numeric_limits<double>::epsilon());
73 return objective_value + (is_maximize ? 1.0 : -1.0) * delta;
An object oriented wrapper for quadratic constraints in ModelStorage.
double WorstGLPKDualBound(const bool is_maximize, const double objective_value, const double relative_gap_limit)