SCIP_ExprhdlrData
107 for( i = 0; i < nargs; ++i )
122 void* ownercreatedata
134assert(list !=
NULL);
135assert(newnode !=
NULL);
137newnode->
next= *list;
149assert(list !=
NULL);
155*list = (*list)->
next;
173 while( (list=list->
next) !=
NULL)
189(*newnode)->expr =
expr;
190(*newnode)->next =
NULL;
207assert(*list ==
NULL);
210 debugSimplify(
"building expr list from %d expressions\n", nexprs);
211 for( i = nexprs - 1; i >= 0; --i )
218assert(nexprs > 1 || (*list)->next ==
NULL);
230assert(node !=
NULL&& *node !=
NULL);
247 if( *exprlist ==
NULL)
251 while( current !=
NULL)
256current = current->
next;
259assert(current ==
NULL);
275 void* ownercreatedata
288 for( i = 0; i < nchildren; ++i )
290children[i] = exprlist->
expr;
291exprlist = exprlist->
next;
294assert(exprlist ==
NULL);
320assert(simplifiedfactor !=
NULL);
321assert(*simplifiedfactor ==
NULL);
322assert(factor !=
NULL);
323assert(changed !=
NULL);
340 debugSimplify(
"[simplifyFactor] seeing a product: include its children\n");
354 debugSimplify(
"[simplifyFactor] seeing a sum of the form coef * child : take coef and child apart\n");
400 void* ownercreatedata
407 if( tomerge ==
NULL)
410 if( *finalchildren ==
NULL)
412*finalchildren = tomerge;
416tomergenode = tomerge;
417current = *finalchildren;
420 while( tomergenode !=
NULL&& current !=
NULL)
434assert(previous ==
NULL|| previous->
next== current);
460 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, &simplifiedsum, ownercreate, ownercreatedata) );
468 SCIP_CALL( SCIPcallExprSimplify(
scip, expexpr, &simplifiedexp, ownercreate, ownercreatedata) );
478tomergenode->
expr= simplifiedexp;
482tomergenode = tomergenode->
next;
486 if( current == *finalchildren )
488assert(previous ==
NULL);
490assert(aux == current);
491current = *finalchildren;
495assert(previous !=
NULL);
497current = current->
next;
498previous->
next= current;
510issignpower1 =
FALSE;
516issignpower1 =
TRUE;
520base1 = current->
expr;
522issignpower1 =
FALSE;
528issignpower2 =
FALSE;
534issignpower2 =
TRUE;
538base2 = tomergenode->
expr;
540issignpower2 =
FALSE;
548 if( !issignpower1 && !issignpower2 )
551#ifdef SCIP_DISABLED_CODE 563 else if( issignpower1 ^ issignpower2 )
568 if( (
int)expo2 % 2 == 0 )
587 else if( !
EPSISINT(expo1+expo2, 0.0) )
601 if(
EPSISINT(expo1+expo2, 0.0) && (
int)(expo1+expo2)%2 == 0 )
621 SCIP_CALL( SCIPcallExprSimplify(
scip, power, &simplifiedpower, ownercreate, ownercreatedata) );
626tomergenode->
expr= simplifiedpower;
632tomergenode = tomergenode->
next;
636 if( current == *finalchildren )
638assert(previous ==
NULL);
640assert(aux == current);
641current = *finalchildren;
645assert(previous !=
NULL);
647current = current->
next;
648previous->
next= current;
662 if( compareres == -1 )
666current = current->
next;
671assert(compareres == 1);
674 if( current == *finalchildren )
676assert(previous ==
NULL);
678tomergenode = tomergenode->
next;
680previous = *finalchildren;
684assert(previous !=
NULL);
687tomergenode = tomergenode->
next;
689previous->
next= aux;
690aux->
next= current;
697 if( tomergenode ==
NULL)
700assert(current ==
NULL);
705 if( *finalchildren ==
NULL)
707assert(previous ==
NULL);
708*finalchildren = tomergenode;
714previous->
next= tomergenode;
732 void* ownercreatedata
740unsimplifiedchildren =
NULL;
746*finalchildren =
NULL;
747 while( unsimplifiedchildren !=
NULL)
753assert(first !=
NULL);
772 if( *simplifiedcoef == 0.0 )
777assert(*finalchildren ==
NULL);
796 void* ownercreatedata
800 if( finalchildren ==
NULL)
807 if( finalchildren->
next==
NULL&& simplifiedcoef == 1.0 )
809*simplifiedexpr = finalchildren->
expr;
824 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, simplifiedexpr, ownercreate, ownercreatedata) );
840 void* ownercreatedata
853entropicchild = finalchildren->
next->
expr;
860entropicchild = finalchildren->
expr;
864 if( entropicchild !=
NULL)
868simplifiedcoef *= -1.0;
873 if( simplifiedcoef != 1.0 )
879*simplifiedexpr = entropy;
902 void* ownercreatedata
936 for( i = 0; i < nchildren2; ++i )
956 for( i = 0; i < nchildren1; ++i )
972 for( j = 0; j < nchildren1; ++j )
979 for( k = 0; k < nchildren2; ++k )
991 debugSimplify(
"multiplying %g expr1 * %g expr2\n", coef1, coef2);
1000factorscoef = coef1 * coef2;
1002assert(factorscoef != 0.0);
1004#ifdef SIMPLIFY_DEBUG 1009 debugSimplify(
"Building product from simplified factors\n");
1010node = finalfactors;
1012 while( node !=
NULL)
1017node = node->
next;
1024assert(finalfactors ==
NULL);
1025assert(term !=
NULL);
1027#ifdef SIMPLIFY_DEBUG 1028 debugSimplify(
"%g expr1 * %g expr2 = %g * product\n", coef1, coef2, coef1 * coef2);
1041 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1060sum = finalchildren->
expr;
1061factors[0] = finalchildren->
next->
expr;
1066sum = finalchildren->
next->
expr;
1067factors[0] = finalchildren->
expr;
1075 for( j = 0; j < nchildren; ++j )
1088assert(termcoef != 0.0);
1091assert(finalfactors ==
NULL);
1092assert(term !=
NULL);
1099 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1118 void* ownercreatedata
1130 for( n = finalchildren; n !=
NULL; n = n->
next)
1134 if( sum_node ==
NULL)
1144 if( sum_node ==
NULL|| nfactors == 0 )
1149 for( n = finalchildren, j = 0; n !=
NULL; n = n->
next)
1150 if( n != sum_node )
1151factors[j++] = n->
expr;
1160 if( nfactors == 1 )
1172assert(termcoef != 0.0);
1175assert(finalfactors ==
NULL);
1176assert(term !=
NULL);
1183 for( j = 0; j < nchildren; ++j )
1196assert(termcoef != 0.0);
1199assert(finalfactors ==
NULL);
1200assert(term !=
NULL);
1207 SCIP_CALL( SCIPcallExprSimplify(
scip, expanded, simplifiedexpr, ownercreate, ownercreatedata) );
1228 void* ownercreatedata
1231 EXPRNODE* finalchildren = *simplifiedfactors;
1236*simplifiedexpr =
NULL;
1238 SCIP_CALL(
enforceSP11(
scip, simplifiedcoef, *simplifiedfactors, simplifiedexpr, ownercreate, ownercreatedata) );
1239 if( *simplifiedexpr !=
NULL)
1242 SCIP_CALL(
enforceSP12(
scip, simplifiedcoef, *simplifiedfactors, expandalways, simplifiedexpr, ownercreate, ownercreatedata) );
1243 if( *simplifiedexpr !=
NULL)
1249 if( *simplifiedexpr !=
NULL)
1253 SCIP_CALL(
enforceSP10(
scip, simplifiedcoef, *simplifiedfactors, simplifiedexpr, ownercreate, ownercreatedata) );
1254 if( *simplifiedexpr !=
NULL)
1258 if( simplifiedcoef != 1.0 )
1269 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, simplifiedexpr, ownercreate, ownercreatedata) );
1312assert(conshdlr !=
NULL);
1313assert(nfactors > 0);
1314assert(bounds !=
NULL);
1315assert(constantfactor != 0.0);
1316assert(coefs !=
NULL);
1317assert(constant !=
NULL);
1318assert(success !=
NULL);
1325 for( i = 0, nfixed = 0; i < nfactors; ++i )
1335box[2*i] = bounds[i].
inf;
1336box[2*i+1] = bounds[i].
sup;
1338xstar[i] = refpoint !=
NULL? refpoint[i] : 0.5 * (box[2*i] + box[2*i+1]);
1347overestimate, prodfunction, &constantfactor, xstar, box, nfactors, targetvalue, success, coefs, constant) );
1384assert(simplifiedexpr !=
NULL);
1388#ifdef SIMPLIFY_DEBUG 1397&finalchildren, &changed, ownercreate, ownercreatedata) );
1399#ifdef SIMPLIFY_DEBUG 1404 debugSimplify(
"Building product from simplified factors\n");
1405node = finalchildren;
1407 while( node !=
NULL)
1412node = node->
next;
1421assert(finalchildren ==
NULL);
1423 if( *simplifiedexpr ==
NULL)
1425*simplifiedexpr =
expr;
1430assert(*simplifiedexpr !=
NULL);
1465 for( i = nchildren1 - 1, j = nchildren2 - 1; i >= 0 && j >= 0; --i, --j )
1468 if( compareresult != 0 )
1469 returncompareresult;
1488assert(i == -1 && j == -1);
1512assert(exprhdlr !=
NULL);
1513assert(exprhdlrdata !=
NULL);
1514assert(*exprhdlrdata !=
NULL);
1517assert(*exprhdlrdata ==
NULL);
1528assert(targetexprdata !=
NULL);
1529assert(sourceexpr !=
NULL);
1532assert(sourceexprdata !=
NULL);
1548assert(exprdata !=
NULL);
1566assert(exprdata !=
NULL);
1579 if( exprdata->coefficient != 1.0 )
1596 if( exprdata->coefficient != 1.0 || currentchild > 0 )
1635assert(hashkey !=
NULL);
1636assert(childrenhashes !=
NULL);
1639assert(exprdata !=
NULL);
1645*hashkey ^= childrenhashes[c];
1661assert(exprdata !=
NULL);
1663*val = exprdata->coefficient;
1685assert(dot !=
NULL);
1743assert(bardot !=
NULL);
1748assert(partialchild !=
NULL);
1760 if( c == childidx )
1781 if( i == c || i == childidx )
1805assert(child !=
NULL);
1823 if( i == childidx )
1844assert(exprdata !=
NULL);
1892assert(refpoint !=
NULL);
1893assert(coefs !=
NULL);
1894assert(constant !=
NULL);
1895assert(islocal !=
NULL);
1896assert(branchcand !=
NULL);
1897assert(*branchcand ==
TRUE);
1898assert(success !=
NULL);
1901assert(exprdata !=
NULL);
1916 SCIPdebugMsg(
scip,
"child %d = %g in [%g, %g]\n", c, refpoint[c], localbounds[c].inf, localbounds[c].sup);
1928 if( nchildren == 2 )
1936refpointx = refpoint[0];
1937bndx = localbounds[0];
1941refpointy = refpoint[1];
1942bndy = localbounds[1];
1946refpointx =
MIN(
MAX(refpointx, bndx.
inf), bndx.
sup);
1947refpointy =
MIN(
MAX(refpointy, bndy.
inf), bndy.
sup);
1955bndy.
inf, bndy.
sup, refpointy, overestimate, &coefs[0], &coefs[1], constant,
1963assert(exprhdlrdata !=
NULL);
1965 if( exprhdlrdata->conshdlr !=
NULL)
1968targetvalue, coefs, constant, success) );
1972 SCIPdebugMsg(
scip,
"no cons_nonlinear included in SCIP, cannot estimate vertex-polyhedral product function\n");
1990assert(nreturned !=
NULL);
1995assert(exprdata !=
NULL);
1997 if( nchildren == 2 )
2008bndy.
inf, bndy.
sup, (bndy.
inf+ bndy.
sup) / 2.0, overestimate, &coefs[0][0], &coefs[0][1],
2009constant, &success);
2016assert(exprhdlrdata !=
NULL);
2018 if( exprhdlrdata->conshdlr !=
NULL)
2025 SCIPdebugMsg(
scip,
"no cons_nonlinear included in SCIP, cannot estimate vertex-polyhedral product function\n");
2049assert(infeasible !=
NULL);
2050assert(childrenbounds !=
NULL);
2052*infeasible =
FALSE;
2065assert(exprdata !=
NULL);
2082childbounds = childrenbounds[j];
2085*infeasible =
TRUE;
2092childbounds = childrenbounds[i];
2095*infeasible =
TRUE;
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,
2103bounds.inf, bounds.sup,
2104childrenbounds[i].inf, childrenbounds[i].sup,
2105childbounds.
inf, childbounds.
sup);
2111*infeasible =
TRUE;
2126assert(success !=
NULL);
2152assert(result !=
NULL);
2154assert(childidx >= 0);
2167 if( i == childidx )
2184 if( nneg % 2 == 0 )
2201assert(isintegral !=
NULL);
2204assert(exprdata !=
NULL);
2206*isintegral =
EPSISINT(exprdata->coefficient, 0.0);
2211assert(child !=
NULL);
2225assert(symdata !=
NULL);
2229(*symdata)->nconstants = 1;
2230(*symdata)->ncoefficients = 0;
2251assert(exprhdlr !=
NULL);
2269 "whether to expand products of a sum and several factors in simplify",
2283 void* ownercreatedata
2290exprdata->coefficient = coefficient;
2310assert(exprdata !=
NULL);
2312 returnexprdata->coefficient;
constraint handler for nonlinear constraints specified by algebraic expressions
#define SCIP_INTERVAL_INFINITY
absolute expression handler
handler for -x*log(x) expressions
exponential expression handler
power and signed power expression handlers
static SCIP_DECL_EXPRHASH(hashProduct)
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_DECL_EXPRCURVATURE(curvatureProduct)
static SCIP_DECL_EXPRESTIMATE(estimateProduct)
static SCIP_RETCODE enforceSP11(SCIP *scip, SCIP_Real simplifiedcoef, EXPRNODE *finalchildren, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_DECL_EXPRSIMPLIFY(simplifyProduct)
static SCIP_DECL_EXPRINTEVAL(intevalProduct)
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_DECL_EXPRFREEDATA(freedataProduct)
static SCIP_DECL_EXPRPRINT(printProduct)
static SCIP_DECL_EXPRFREEHDLR(freehdlrProduct)
static SCIP_RETCODE simplifyFactor(SCIP *scip, SCIP_EXPR *factor, SCIP_Real *simplifiedcoef, EXPRNODE **simplifiedfactor, SCIP_Bool *changed)
static SCIP_DECL_EXPRGETSYMDATA(getSymDataProduct)
static SCIP_RETCODE createExprProductFromExprlist(SCIP *scip, EXPRNODE *exprlist, SCIP_Real coef, SCIP_EXPR **expr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_DECL_EXPRINITESTIMATES(initestimatesProduct)
static SCIP_RETCODE createExprNode(SCIP *scip, SCIP_EXPR *expr, EXPRNODE **newnode)
static EXPRNODE * listPopFirst(EXPRNODE **list)
static SCIP_DECL_EXPRCOPYDATA(copydataProduct)
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_DECL_EXPRBWFWDIFF(bwfwdiffProduct)
static SCIP_DECL_EXPRINTEGRALITY(integralityProduct)
static SCIP_DECL_EXPRCOMPARE(compareProduct)
#define EXPRHDLR_PRECEDENCE
static SCIP_DECL_VERTEXPOLYFUN(prodfunction)
static SCIP_RETCODE createExprlistFromExprs(SCIP *scip, SCIP_EXPR **exprs, int nexprs, EXPRNODE **list)
static SCIP_DECL_EXPREVAL(evalProduct)
static SCIP_DECL_EXPRFWDIFF(fwdiffProduct)
static SCIP_DECL_EXPRMONOTONICITY(monotonicityProduct)
static SCIP_RETCODE mergeProductExprlist(SCIP *scip, EXPRNODE *tomerge, EXPRNODE **finalchildren, EXPRNODE **unsimplifiedchildren, SCIP_Bool *changed, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_DECL_EXPRCOPYHDLR(copyhdlrProduct)
static SCIP_DECL_EXPRREVERSEPROP(reversepropProduct)
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)
static SCIP_DECL_EXPRBWDIFF(bwdiffProduct)
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_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 SCIPexprhdlrSetIntegrality(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRINTEGRALITY((*integrality)))
void SCIPexprhdlrSetCopyFreeData(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYDATA((*copydata)), SCIP_DECL_EXPRFREEDATA((*freedata)))
void SCIPexprhdlrSetPrint(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRPRINT((*print)))
void SCIPexprhdlrSetGetSymdata(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRGETSYMDATA((*getsymdata)))
SCIP_EXPRHDLR * SCIPgetExprhdlrProduct(SCIP *scip)
void SCIPexprhdlrSetHash(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRHASH((*hash)))
SCIP_EXPRHDLRDATA * SCIPexprhdlrGetData(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetCopyFreeHdlr(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYHDLR((*copyhdlr)), SCIP_DECL_EXPRFREEHDLR((*freehdlr)))
void SCIPexprhdlrSetDiff(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRBWDIFF((*bwdiff)), SCIP_DECL_EXPRFWDIFF((*fwdiff)), SCIP_DECL_EXPRBWFWDIFF((*bwfwdiff)))
void SCIPexprhdlrSetReverseProp(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRREVERSEPROP((*reverseprop)))
void SCIPexprhdlrSetEstimate(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRINITESTIMATES((*initestimates)), SCIP_DECL_EXPRESTIMATE((*estimate)))
void SCIPexprhdlrSetMonotonicity(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRMONOTONICITY((*monotonicity)))
void SCIPexprhdlrSetIntEval(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRINTEVAL((*inteval)))
void SCIPexprhdlrSetCurvature(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCURVATURE((*curvature)))
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 SCIPexprhdlrSetCompare(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOMPARE((*compare)))
void SCIPexprhdlrSetSimplify(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRSIMPLIFY((*simplify)))
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_Bool SCIPexprIsIntegral(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)
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)
bilinear nonlinear handler
public functions to work with algebraic expressions
public data structures and miscellaneous methods
structs for symmetry computations
#define SCIP_DECL_EXPR_OWNERCREATE(x)
struct SCIP_ExprhdlrData SCIP_EXPRHDLRDATA
struct SCIP_ExprData SCIP_EXPRDATA
#define SCIP_EXPRITER_VISITINGCHILD
#define SCIP_EXPRITER_VISITEDCHILD
#define SCIP_EXPRITER_LEAVEEXPR
#define SCIP_EXPRITER_ENTEREXPR
enum SCIP_Retcode SCIP_RETCODE
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4