22 #include "CoinFinite.hpp"
24 using namespace Couenne;
49 bool &resL,
bool &resU,
70 else resU =
updateBound (+1, u + index, 0.) || resU;
90 bool resL, resU = resL =
false;
98 if (argInt) l [index] = ceil (l [index] -
COUENNE_EPS);
103 if (argInt) u [index] = floor (u [index] +
COUENNE_EPS);
106 return (resL || resU);
114 if (ind < 0)
return 0.;
129 x = problem -> X (xind),
130 y = problem -> X (index);
132 return (((problem -> Lb (xind) >= 0) && (x > 0) && (y*x <= 1)) ||
133 ((problem -> Ub (xind) <= 0) && (x < 0) && (y*x <= 1)));
virtual bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
CouNumber gradientNorm(const double *x)
return l-2 norm of gradient at given point
bool updateBound(register int sign, register CouNumber *dst, register CouNumber src)
updates maximum violation.
virtual bool isInteger()
is this expression integer?
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
void setLower(ChangeStatus lower)
Power of an expression (binary operator), with constant.
expression * argument_
single argument taken by this expression
bool impliedBound(int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
implied bound processing
void setUpper(ChangeStatus upper)
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
auxSign
"sign" of the constraint defining an auxiliary.
virtual void print(std::ostream &out=std::cout, bool=false) const
output "1/argument"
Class for MINLP problems with symbolic information.
expression clone (points to another expression)
void invPowImplBounds(int, int, CouNumber *, CouNumber *, CouNumber, bool &, bool &, enum expression::auxSign)
set implied bounds for function w = x^k, k negative, integer or inverse integer, and odd ...
double CouNumber
main number type in Couenne
expression * differentiate(int index)
differentiation
void fint fint fint real fint real * x