78 if (!constraint.
name.empty()) {
81 if (constraint.
terms.empty()) {
82 return absl::InvalidArgumentError(
"constraint must have at least one term");
84 for (
const auto [coef, var] : constraint.
terms) {
85 if (var < VariableIndex{0} || var >= variables_.end_index()) {
87 <<
"variable ids should be in [0," << variables_.end_index()
88 <<
") but found: " << var;
90 if (!std::isfinite(coef)) {
92 <<
"All coefficients in constraints must be finite and not NaN "
98 if (std::isnan(constraint.
rhs)) {
99 return absl::InvalidArgumentError(
"rhs of constraint was NaN");
101 ConstraintIndex result = constraints_.end_index();
102 constraints_.push_back(std::move(constraint));