49#define EXPRHDLR_NAME "prod"
50#define EXPRHDLR_DESC "product expression"
51#define EXPRHDLR_PRECEDENCE 50000
52#define EXPRHDLR_HASHKEY SCIPcalcFibHash(54949.0)
59#define debugSimplify printf
61#define debugSimplify while( FALSE ) printf
77struct SCIP_ExprhdlrData
105 for(
i = 0;
i < nargs; ++
i )
120 void* ownercreatedata
135 newnode->
next = *list;
153 *list = (*list)->
next;
187 (*newnode)->expr =
expr;
188 (*newnode)->next =
NULL;
208 debugSimplify(
"building expr list from %d expressions\n", nexprs);
209 for(
i = nexprs - 1;
i >= 0; --
i )
245 if( *exprlist ==
NULL )
249 while( current !=
NULL )
254 current = current->
next;
273 void* ownercreatedata
286 for(
i = 0;
i < nchildren; ++
i )
288 children[
i] = exprlist->
expr;
289 exprlist = exprlist->
next;
338 debugSimplify(
"[simplifyFactor] seeing a product: include its children\n");
352 debugSimplify(
"[simplifyFactor] seeing a sum of the form coef * child : take coef and child apart\n");
398 void* ownercreatedata
405 if( tomerge ==
NULL )
408 if( *finalchildren ==
NULL )
410 *finalchildren = tomerge;
414 tomergenode = tomerge;
415 current = *finalchildren;
418 while( tomergenode !=
NULL && current !=
NULL )
458 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, &simplifiedsum, ownercreate, ownercreatedata) );
466 SCIP_CALL( SCIPcallExprSimplify(
scip, expexpr, &simplifiedexp, ownercreate, ownercreatedata) );
476 tomergenode->
expr = simplifiedexp;
480 tomergenode = tomergenode->
next;
484 if( current == *finalchildren )
489 current = *finalchildren;
495 current = current->
next;
496 previous->
next = current;
508 issignpower1 =
FALSE;
518 base1 = current->
expr;
520 issignpower1 =
FALSE;
526 issignpower2 =
FALSE;
536 base2 = tomergenode->
expr;
538 issignpower2 =
FALSE;
546 if( !issignpower1 && !issignpower2 )
549#ifdef SCIP_DISABLED_CODE
561 else if( issignpower1 ^ issignpower2 )
566 if( (
int)expo2 % 2 == 0 )
585 else if( !
EPSISINT(expo1+expo2, 0.0) )
599 if(
EPSISINT(expo1+expo2, 0.0) && (
int)(expo1+expo2)%2 == 0 )
619 SCIP_CALL( SCIPcallExprSimplify(
scip, power, &simplifiedpower, ownercreate, ownercreatedata) );
624 tomergenode->
expr = simplifiedpower;
630 tomergenode = tomergenode->
next;
634 if( current == *finalchildren )
639 current = *finalchildren;
645 current = current->
next;
646 previous->
next = current;
660 if( compareres == -1 )
664 current = current->
next;
672 if( current == *finalchildren )
676 tomergenode = tomergenode->
next;
678 previous = *finalchildren;
685 tomergenode = tomergenode->
next;
687 previous->
next = aux;
695 if( tomergenode ==
NULL )
703 if( *finalchildren ==
NULL )
706 *finalchildren = tomergenode;
712 previous->
next = tomergenode;
730 void* ownercreatedata
738 unsimplifiedchildren =
NULL;
744 *finalchildren =
NULL;
745 while( unsimplifiedchildren !=
NULL )
770 if( *simplifiedcoef == 0.0 )
794 void* ownercreatedata
798 if( finalchildren ==
NULL )
805 if( finalchildren->
next ==
NULL && simplifiedcoef == 1.0 )
807 *simplifiedexpr = finalchildren->
expr;
822 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, simplifiedexpr, ownercreate, ownercreatedata) );
838 void* ownercreatedata
851 entropicchild = finalchildren->
next->
expr;
858 entropicchild = finalchildren->
expr;
862 if( entropicchild !=
NULL )
866 simplifiedcoef *= -1.0;
871 if( simplifiedcoef != 1.0 )
877 *simplifiedexpr = entropy;
900 void* ownercreatedata
934 for(
i = 0;
i < nchildren2; ++
i )
954 for(
i = 0;
i < nchildren1; ++
i )
970 for( j = 0; j < nchildren1; ++j )
977 for( k = 0; k < nchildren2; ++k )
989 debugSimplify(
"multiplying %g expr1 * %g expr2\n", coef1, coef2);
998 factorscoef = coef1 * coef2;
1000 assert(factorscoef != 0.0);
1002#ifdef SIMPLIFY_DEBUG
1007 debugSimplify(
"Building product from simplified factors\n");
1008 node = finalfactors;
1010 while( node !=
NULL )
1025#ifdef SIMPLIFY_DEBUG
1026 debugSimplify(
"%g expr1 * %g expr2 = %g * product\n", coef1, coef2, coef1 * coef2);
1039 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1058 sum = finalchildren->
expr;
1059 factors[0] = finalchildren->
next->
expr;
1065 factors[0] = finalchildren->
expr;
1073 for( j = 0; j < nchildren; ++j )
1097 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1116 void* ownercreatedata
1128 for( n = finalchildren; n !=
NULL; n = n->
next )
1132 if( sum_node ==
NULL )
1142 if( sum_node ==
NULL || nfactors == 0 )
1147 for( n = finalchildren, j = 0; n !=
NULL; n = n->
next )
1149 factors[j++] = n->
expr;
1181 for( j = 0; j < nchildren; ++j )
1205 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1226 void* ownercreatedata
1229 EXPRNODE* finalchildren = *simplifiedfactors;
1234 *simplifiedexpr =
NULL;
1237 if( *simplifiedexpr !=
NULL )
1240 SCIP_CALL(
enforceSP12(
scip, simplifiedcoef, *simplifiedfactors, expandalways, simplifiedexpr, ownercreate, ownercreatedata) );
1241 if( *simplifiedexpr !=
NULL )
1247 if( *simplifiedexpr !=
NULL )
1252 if( *simplifiedexpr !=
NULL )
1256 if( simplifiedcoef != 1.0 )
1267 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, simplifiedexpr, ownercreate, ownercreatedata) );
1313 assert(constantfactor != 0.0);
1323 for(
i = 0, nfixed = 0;
i < nfactors; ++
i )
1333 box[2*
i] = bounds[
i].
inf;
1334 box[2*
i+1] = bounds[
i].
sup;
1336 xstar[
i] = refpoint !=
NULL ? refpoint[
i] : 0.5 * (box[2*
i] + box[2*
i+1]);
1345 overestimate, prodfunction, &constantfactor, xstar, box, nfactors, targetvalue, success, coefs, constant) );
1386#ifdef SIMPLIFY_DEBUG
1395 &finalchildren, &changed, ownercreate, ownercreatedata) );
1397#ifdef SIMPLIFY_DEBUG
1402 debugSimplify(
"Building product from simplified factors\n");
1403 node = finalchildren;
1405 while( node !=
NULL )
1421 if( *simplifiedexpr ==
NULL )
1423 *simplifiedexpr =
expr;
1463 for(
i = nchildren1 - 1, j = nchildren2 - 1;
i >= 0 && j >= 0; --
i, --j )
1466 if( compareresult != 0 )
1467 return compareresult;
1577 if( exprdata->coefficient != 1.0 )
1594 if( exprdata->coefficient != 1.0 || currentchild > 0 )
1643 *hashkey ^= childrenhashes[
c];
1661 *val = exprdata->coefficient;
1779 if(
i ==
c ||
i == childidx )
1915 SCIPdebugMsg(
scip,
"child %d = %g in [%g, %g]\n",
c, refpoint[
c], localbounds[
c].inf, localbounds[
c].sup);
1927 if( nchildren == 2 )
1935 refpointx = refpoint[0];
1936 bndx = localbounds[0];
1940 refpointy = refpoint[1];
1941 bndy = localbounds[1];
1954 bndy.
inf, bndy.
sup, refpointy, overestimate, &coefs[0], &coefs[1], constant,
1964 if( exprhdlrdata->conshdlr !=
NULL )
1967 targetvalue, coefs, constant, success) );
1971 SCIPdebugMsg(
scip,
"no cons_nonlinear included in SCIP, cannot estimate vertex-polyhedral product function\n");
1997 if( nchildren == 2 )
2008 bndy.
inf, bndy.
sup, (bndy.
inf + bndy.
sup ) / 2.0, overestimate, &coefs[0][0], &coefs[0][1],
2009 constant, &success);
2018 if( exprhdlrdata->conshdlr !=
NULL )
2025 SCIPdebugMsg(
scip,
"no cons_nonlinear included in SCIP, cannot estimate vertex-polyhedral product function\n");
2052 *infeasible =
FALSE;
2082 childbounds = childrenbounds[j];
2092 childbounds = childrenbounds[
i];
2102 SCIPdebugMsg(
scip,
"child %d: solved [%g,%g]*x = [%g,%g] with x in [%g,%g] -> x = [%g,%g]\n",
i, otherfactor.
inf, otherfactor.
sup,
2103 bounds.inf, bounds.sup,
2104 childrenbounds[
i].inf, childrenbounds[
i].sup,
2105 childbounds.
inf, childbounds.
sup);
2229 (*symdata)->nconstants = 1;
2230 (*symdata)->ncoefficients = 0;
2269 "whether to expand products of a sum and several factors in simplify",
2283 void* ownercreatedata
2290 exprdata->coefficient = coefficient;
2312 return exprdata->coefficient;
constraint handler for nonlinear constraints specified by algebraic expressions
#define SCIP_INTERVAL_INFINITY
#define SCIP_STRINGEQ(name, reference, retcode)
#define EXPRHDLR_PRECEDENCE
absolute expression handler
handler for -x*log(x) expressions
exponential expression handler
power and signed power expression handlers
static SCIP_RETCODE buildSimplifiedProduct(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE **simplifiedfactors, SCIP_Bool expandalways, SCIP_Bool changed, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static int listLength(EXPRNODE *list)
static SCIP_RETCODE enforceSP11(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE *finalchildren, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE enforceSP12(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE *finalchildren, SCIP_Bool expandalways, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE enforceSP10(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE *finalchildren, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE simplifyFactor(SCIP *scip, SCIP_EXPR *factor, SCIP_Real *simplifiedcoef, EXPRNODE **simplifiedfactor, SCIP_Bool *changed)
static SCIP_RETCODE createExprProductFromExprlist(SCIP *scip, EXPRNODE *exprlist, SCIP_Real coef, SCIP_EXPR **expr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE createExprNode(SCIP *scip, SCIP_EXPR *expr, EXPRNODE **newnode)
static EXPRNODE * listPopFirst(EXPRNODE **list)
static void insertFirstList(EXPRNODE *newnode, EXPRNODE **list)
static SCIP_RETCODE simplifyMultiplyChildren(SCIP *scip, SCIP_EXPR **exprs, int nexprs, SCIP_Real *simplifiedcoef, EXPRNODE **finalchildren, SCIP_Bool *changed, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE enforceSP12b(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE *finalchildren, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE freeExprlist(SCIP *scip, EXPRNODE **exprlist)
static SCIP_RETCODE freeExprNode(SCIP *scip, EXPRNODE **node)
static SCIP_RETCODE createExprlistFromExprs(SCIP *scip, SCIP_EXPR **exprs, int nexprs, EXPRNODE **list)
static SCIP_RETCODE mergeProductExprlist(SCIP *scip, EXPRNODE *tomerge, EXPRNODE **finalchildren, EXPRNODE **unsimplifiedchildren, SCIP_Bool *changed, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_RETCODE estimateVertexPolyhedralProduct(SCIP *scip, SCIP_CONSHDLR *conshdlr, int nfactors, SCIP_INTERVAL *bounds, SCIP_Real constantfactor, SCIP_Real *refpoint, SCIP_Bool overestimate, SCIP_Real targetvalue, SCIP_Real *coefs, SCIP_Real *constant, SCIP_Bool *success)
product expression handler
constant value expression handler
SCIP_RETCODE SCIPcomputeFacetVertexPolyhedralNonlinear(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_Bool overestimate, SCIP_DECL_VERTEXPOLYFUN((*function)), void *fundata, SCIP_Real *xstar, SCIP_Real *box, int nallvars, SCIP_Real targetvalue, SCIP_Bool *success, SCIP_Real *facetcoefs, SCIP_Real *facetconstant)
#define SCIP_DECL_VERTEXPOLYFUN(f)
#define SCIP_MAXVERTEXPOLYDIM
SCIP_RETCODE SCIPcreateExprProduct(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real coefficient, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprAbs(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPappendExprSumExpr(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPR *child, SCIP_Real childcoef)
SCIP_RETCODE SCIPcreateExprSignpower(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_Real exponent, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_Bool SCIPisExprExp(SCIP *scip, SCIP_EXPR *expr)
SCIP_RETCODE SCIPcreateExprExp(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_Bool SCIPisExprSignpower(SCIP *scip, SCIP_EXPR *expr)
SCIP_RETCODE SCIPcreateExprSum(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real *coefficients, SCIP_Real constant, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprValue(SCIP *scip, SCIP_EXPR **expr, SCIP_Real value, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprEntropy(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprPow(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_Real exponent, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPincludeExprhdlrProduct(SCIP *scip)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
#define SCIPdebugMsgPrint
void SCIPaddBilinMcCormick(SCIP *scip, SCIP_Real bilincoef, SCIP_Real lbx, SCIP_Real ubx, SCIP_Real refpointx, SCIP_Real lby, SCIP_Real uby, SCIP_Real refpointy, SCIP_Bool overestimate, SCIP_Real *lincoefx, SCIP_Real *lincoefy, SCIP_Real *linconstant, SCIP_Bool *success)
unsigned int SCIPcalcFibHash(SCIP_Real v)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
const char * SCIPexprhdlrGetName(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetCompare(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetIntegrality(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetCurvature(SCIP_EXPRHDLR *exprhdlr,)
SCIP_EXPRHDLR * SCIPgetExprhdlrProduct(SCIP *scip)
SCIP_EXPRHDLRDATA * SCIPexprhdlrGetData(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetIntEval(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetMonotonicity(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetReverseProp(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetHash(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetGetSymdata(SCIP_EXPRHDLR *exprhdlr,)
SCIP_RETCODE SCIPincludeExprhdlr(SCIP *scip, SCIP_EXPRHDLR **exprhdlr, const char *name, const char *desc, unsigned int precedence, SCIP_DECL_EXPREVAL((*eval)), SCIP_EXPRHDLRDATA *data)
void SCIPexprhdlrSetSimplify(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetDiff(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRBWDIFF((*bwdiff)), SCIP_DECL_EXPRFWDIFF((*fwdiff)),)
void SCIPexprhdlrSetCopyFreeHdlr(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYHDLR((*copyhdlr)),)
void SCIPexprhdlrSetPrint(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetCopyFreeData(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYDATA((*copydata)),)
void SCIPexprhdlrSetEstimate(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRINITESTIMATES((*initestimates)),)
SCIP_IMPLINTTYPE SCIPexprGetIntegrality(SCIP_EXPR *expr)
SCIP_RETCODE SCIPcreateExpr(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPRHDLR *exprhdlr, SCIP_EXPRDATA *exprdata, int nchildren, SCIP_EXPR **children, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
void SCIPexprSetData(SCIP_EXPR *expr, SCIP_EXPRDATA *exprdata)
int SCIPexprGetNChildren(SCIP_EXPR *expr)
SCIP_Real SCIPgetExponentExprPow(SCIP_EXPR *expr)
SCIP_Bool SCIPisExprProduct(SCIP *scip, SCIP_EXPR *expr)
SCIP_Bool SCIPisExprSum(SCIP *scip, SCIP_EXPR *expr)
SCIP_Real * SCIPgetCoefsExprSum(SCIP_EXPR *expr)
SCIP_Bool SCIPisExprValue(SCIP *scip, SCIP_EXPR *expr)
SCIP_Real SCIPgetCoefExprProduct(SCIP_EXPR *expr)
int SCIPcompareExpr(SCIP *scip, SCIP_EXPR *expr1, SCIP_EXPR *expr2)
SCIP_RETCODE SCIPreleaseExpr(SCIP *scip, SCIP_EXPR **expr)
SCIP_Real SCIPexprGetDot(SCIP_EXPR *expr)
SCIP_EXPRDATA * SCIPexprGetData(SCIP_EXPR *expr)
SCIP_EXPRCURV SCIPexprcurvMultiply(SCIP_Real factor, SCIP_EXPRCURV curvature)
SCIP_RETCODE SCIPprintExpr(SCIP *scip, SCIP_EXPR *expr, FILE *file)
SCIP_Real SCIPgetValueExprValue(SCIP_EXPR *expr)
SCIP_Bool SCIPisExprPower(SCIP *scip, SCIP_EXPR *expr)
SCIP_Real SCIPexprGetEvalValue(SCIP_EXPR *expr)
SCIP_EXPR ** SCIPexprGetChildren(SCIP_EXPR *expr)
SCIP_Real SCIPgetConstantExprSum(SCIP_EXPR *expr)
SCIP_INTERVAL SCIPexprGetActivity(SCIP_EXPR *expr)
void SCIPcaptureExpr(SCIP_EXPR *expr)
int SCIPexprGetNUses(SCIP_EXPR *expr)
SCIP_RETCODE SCIPdismantleExpr(SCIP *scip, FILE *file, SCIP_EXPR *expr)
SCIP_RETCODE SCIPevalExprActivity(SCIP *scip, SCIP_EXPR *expr)
SCIP_EXPRHDLR * SCIPexprGetHdlr(SCIP_EXPR *expr)
SCIP_Real SCIPintervalGetInf(SCIP_INTERVAL interval)
SCIP_Bool SCIPintervalIsEntire(SCIP_Real infinity, SCIP_INTERVAL operand)
void SCIPintervalSolveUnivariateQuadExpression(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL sqrcoeff, SCIP_INTERVAL lincoeff, SCIP_INTERVAL rhs, SCIP_INTERVAL xbnds)
void SCIPintervalIntersect(SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)
SCIP_Bool SCIPintervalIsEmpty(SCIP_Real infinity, SCIP_INTERVAL operand)
struct SCIP_Interval SCIP_INTERVAL
void SCIPintervalMul(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
SCIP_Real SCIPintervalGetSup(SCIP_INTERVAL interval)
void SCIPintervalSetEmpty(SCIP_INTERVAL *resultant)
#define SCIPallocClearBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemory(scip, ptr, source)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Bool SCIPisRelEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
assert(minobj< SCIPgetCutoffbound(scip))
bilinear nonlinear handler
public functions to work with algebraic expressions
public data structures and miscellaneous methods
structs for symmetry computations
struct SCIP_Conshdlr SCIP_CONSHDLR
struct SCIP_Expr SCIP_EXPR
#define SCIP_DECL_EXPR_OWNERCREATE(x)
#define SCIP_DECL_EXPRREVERSEPROP(x)
#define SCIP_DECL_EXPRINITESTIMATES(x)
#define SCIP_DECL_EXPRBWFWDIFF(x)
#define SCIP_DECL_EXPRCURVATURE(x)
struct SCIP_ExprhdlrData SCIP_EXPRHDLRDATA
struct SCIP_ExprData SCIP_EXPRDATA
#define SCIP_DECL_EXPRFREEDATA(x)
#define SCIP_DECL_EXPRBWDIFF(x)
#define SCIP_DECL_EXPRINTEVAL(x)
#define SCIP_DECL_EXPRMONOTONICITY(x)
#define SCIP_EXPRITER_VISITINGCHILD
struct SCIP_Exprhdlr SCIP_EXPRHDLR
#define SCIP_DECL_EXPRCOMPARE(x)
#define SCIP_DECL_EXPRSIMPLIFY(x)
#define SCIP_DECL_EXPREVAL(x)
#define SCIP_DECL_EXPRFWDIFF(x)
#define SCIP_DECL_EXPRHASH(x)
#define SCIP_DECL_EXPRCOPYHDLR(x)
#define SCIP_DECL_EXPRPRINT(x)
#define SCIP_DECL_EXPRFREEHDLR(x)
#define SCIP_DECL_EXPRINTEGRALITY(x)
#define SCIP_EXPRITER_VISITEDCHILD
#define SCIP_DECL_EXPRGETSYMDATA(x)
#define SCIP_DECL_EXPRCOPYDATA(x)
#define SCIP_EXPRITER_LEAVEEXPR
#define SCIP_DECL_EXPRESTIMATE(x)
#define SCIP_EXPRITER_ENTEREXPR
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_IMPLINTTYPE_STRONG