19 #include "CoinHelperFunctions.hpp"
20 #include "CoinFinite.hpp"
22 using namespace Couenne;
38 all [4] = lba; all [5] =
new exprClone (lba);
66 ub = CoinMax (-lba, uba);
81 arglist [3] =
new exprOpp (diffarg);
83 return new exprMin (arglist, 4);
100 bool tighter =
false;
145 else if (curr < -valdep) {
149 else if (curr > valdep) {
167 y = problem -> X (index);
169 return ((y <= x) || (y <= -x));
virtual void closestFeasible(expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
closest feasible points in function in both directions
bool updateBound(register int sign, register CouNumber *dst, register CouNumber src)
updates maximum violation.
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
void setLower(ChangeStatus lower)
expression * argument_
single argument taken by this expression
virtual void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
bool impliedBound(int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
implied bound processing
expression * differentiate(int index)
differentiation
void setUpper(ChangeStatus upper)
virtual bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
auxSign
"sign" of the constraint defining an auxiliary.
Class for MINLP problems with symbolic information.
expression clone (points to another expression)
bool isInteger()
is this expression integer?
double CouNumber
main number type in Couenne
void fint fint fint real fint real * x