21 #include "CoinHelperFunctions.hpp"
22 #include "CoinFinite.hpp"
24 using namespace Couenne;
64 lb =
log (CoinMax (1
e-50, lba));
65 ub =
log (CoinMax (1
e-50, uba));
117 y = problem -> X (index);
119 return ((x == 0.) || (y >
log (x)));
bool impliedBound(int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
implied bound processing
bool updateBound(register int sign, register CouNumber *dst, register CouNumber src)
updates maximum violation.
virtual bool isInteger()
is this expression integer?
CouExpr & log(CouExpr &e)
void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
void setLower(ChangeStatus lower)
exprLog(expression *al)
Constructors, destructor.
expression * argument_
single argument taken by this expression
expression * differentiate(int index)
differentiation
void fint fint fint real fint real real real real real real real real real * e
void setUpper(ChangeStatus upper)
CouExpr & exp(CouExpr &e)
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
auxSign
"sign" of the constraint defining an auxiliary.
CouNumber gradientNorm(const double *x)
return l-2 norm of gradient at given point
Class for MINLP problems with symbolic information.
expression clone (points to another expression)
virtual bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
double CouNumber
main number type in Couenne
void fint fint fint real fint real * x