11 #ifndef COUENNE_EXPREXP_HPP
12 #define COUENNE_EXPREXP_HPP
70 const OsiBranchingInformation *
info,
83 return log((*vardep)());
Cut Generator for linear convexifications.
expression * clone(Domain *d=NULL) const
Cloning method.
void generateCuts(expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
Generate convexification cuts for this expression.
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
OsiObject for auxiliary variables $w=f(x)$.
virtual CouNumber inverse(expression *vardep) const
inverse of exponential
CouExpr & log(CouExpr &e)
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
virtual bool isBijective() const
return true if bijective
virtual CouNumber selectBranch(const CouenneObject *obj, const OsiBranchingInformation *info, expression *&var, double *&brpts, double *&brDist, int &way)
Set up branching object by evaluating many branching points for each expression's arguments...
virtual enum expr_type code()
Code for comparisons.
expression * argument_
single argument taken by this expression
expression class for unary functions (sin, log, etc.)
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
CouExpr & exp(CouExpr &e)
auxSign
"sign" of the constraint defining an auxiliary.
unary_function F()
The operator's function.
CouNumber(* unary_function)(CouNumber)
unary function, used in all exprUnary
expression * differentiate(int index)
Differentiation.
exprExp(expression *al)
Constructor.
virtual bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
Class for MINLP problems with symbolic information.
std::string printOp() const
Print operator.
CouNumber gradientNorm(const double *x)
return l-2 norm of gradient at given point
double CouNumber
main number type in Couenne
expr_type
code returned by the method expression::code()
void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
class for the exponential,
bool impliedBound(int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
Implied bound processing.
void fint fint fint real fint real real real real real real real real * w
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
void fint fint fint real fint real * x