assert(exprdata !=
NULL);
85assert(ncoefficients >= 0);
89 if( coefficients !=
NULL)
98 for( i = 0; i < ncoefficients; ++i )
99(*exprdata)->coefficients[i] = 1.0;
102(*exprdata)->coefssize = ncoefficients;
103(*exprdata)->constant = constant;
120 void* ownercreatedata
129assert(duplicate !=
NULL);
132assert(changed !=
NULL);
139expr = children[idx];
140assert(expr !=
NULL);
197assert(child !=
NULL);
207 if( expchild !=
NULL)
223expconstant = log(coef);
228expconstant = log(-coef);
237 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, &simplifiedsum, ownercreate, ownercreatedata) );
245 SCIP_CALL( SCIPcallExprSimplify(
scip, exponential, &simplifiedexp, ownercreate, ownercreatedata) );
265 SCIP_CALL( SCIPcallExprSimplify(
scip, prod, &simplifiedprod, ownercreate, ownercreatedata) );
299expconstant = log(coef);
304expconstant = log(-coef);
313 SCIP_CALL( SCIPcallExprSimplify(
scip, sum, &simplifiedsum, ownercreate, ownercreatedata) );
321 SCIP_CALL( SCIPcallExprSimplify(
scip, exponential, &simplifiedexp, ownercreate, ownercreatedata) );
379assert(expr !=
NULL);
380assert(simplifiedexpr !=
NULL);
390assert(duplicate !=
NULL);
393 for( i = 0; i < nchildren; i++ )
413 if( nchildren == 0 )
420 if( nchildren == 1 )
422 if( coefs[0] == 0.0 )
429*simplifiedexpr = children[0];
431*simplifiedexpr = changed ? duplicate : expr;
440 for( i = 0; i < nchildren; i++ )
443sortdata.
exprs= children;
444 SCIPsortInd(order, sortExprComp, (
void*)&sortdata, nchildren);
449 for( i = 0; i < nchildren; ++i )
451newchildren[i] = children[order[i]];
452newcoefs[i] = coefs[order[i]];
461 for( i = 0; i < nchildren; i++ )
464 if( newcoefs[i] == 0.0 )
483newcoefs[i+1] += newcoefs[i];
488newchildren[nnewchildren] = newchildren[i];
489newcoefs[nnewchildren] = newcoefs[i];
496 debugSimplify(
"what to do? finalchildren has length %d\n", nnewchildren);
499 if( nnewchildren == 0 )
501 debugSimplify(
"[sum] got empty list, return value %g\n", newconstant);
508 if( nnewchildren == 1 && newcoefs[0] == 1.0 && newconstant == 0.0 )
510*simplifiedexpr = newchildren[0];
520ownercreate, ownercreatedata) );
525*simplifiedexpr = expr;
548assert(expr !=
NULL);
551assert(exprdata !=
NULL);
555(*symdata)->nconstants = 1;
556(*symdata)->ncoefficients = exprdata->coefssize;
559(*symdata)->constants[0] = exprdata->constant;
562 for( i = 0; i < exprdata->coefssize; ++i )
563(*symdata)->coefficients[i] = exprdata->coefficients[i];
566 for( i = 0; i < exprdata->coefssize; ++i )
610 for( i = nchildren1 - 1, j = nchildren2 - 1; i >= 0 && j >= 0; --i, --j )
613 if( compareresult != 0 )
614 returncompareresult;
618 if( (coefs1 ? coefs1[i] : 1.0) < (coefs2 ? coefs2[j] : 1.0) )
620 if( (coefs1 ? coefs1[i] : 1.0) > (coefs2 ? coefs2[j] : 1.0) )
642assert(i == -1 && j == -1);
643 if( const1 < const2 )
645 if( const1 > const2 )
667assert(targetexprdata !=
NULL);
668assert(sourceexpr !=
NULL);
671assert(sourceexprdata !=
NULL);
674sourceexprdata->coefficients, sourceexprdata->constant) );
685assert(expr !=
NULL);
688assert(exprdata !=
NULL);
704assert(expr !=
NULL);
707assert(exprdata !=
NULL);
721 if( exprdata->constant != 0.0 )
732coef = exprdata->coefficients[currentchild];
738 if( exprdata->constant != 0.0 || currentchild > 0 )
743 else if( coef == -1.0 )
751 SCIPinfoMessage(
scip, file, (exprdata->constant != 0.0 || currentchild > 0) ?
"%+.15g*":
"%.15g*", coef);
782assert(expr !=
NULL);
785assert(exprdata !=
NULL);
788*val = exprdata->constant;
807assert(expr !=
NULL);
808assert(dot !=
NULL);
811assert(exprdata !=
NULL);
828assert(expr !=
NULL);
843assert(bardot !=
NULL);
858assert(expr !=
NULL);
861assert(exprdata !=
NULL);
879 if( exprdata->coefficients[c] == 1.0 )
908assert(expr !=
NULL);
911assert(coefs[0] !=
NULL);
912assert(constant !=
NULL);
913assert(nreturned !=
NULL);
916assert(exprdata !=
NULL);
919*constant = exprdata->constant;
932assert(expr !=
NULL);
934assert(islocal !=
NULL);
935assert(success !=
NULL);
936assert(branchcand !=
NULL);
939assert(exprdata !=
NULL);
944*constant = exprdata->constant;
966assert(expr !=
NULL);
967assert(infeasible !=
NULL);
970assert(nchildren > 0);
973assert(exprdata !=
NULL);
978exprdata->coefficients, exprdata->constant, bounds, newbounds, infeasible);
980 if( !*infeasible && nreductions > 0 )
996assert(expr !=
NULL);
997assert(hashkey !=
NULL);
998assert(childrenhashes !=
NULL);
1001assert(exprdata !=
NULL);
1008*hashkey ^=
SCIPcalcFibHash(exprdata->coefficients[c]) ^ childrenhashes[c];
1022assert(expr !=
NULL);
1023assert(childcurv !=
NULL);
1024assert(success !=
NULL);
1027assert(exprdata !=
NULL);
1044assert(expr !=
NULL);
1045assert(result !=
NULL);
1049assert(exprdata !=
NULL);
1064assert(expr !=
NULL);
1065assert(isintegral !=
NULL);
1068assert(exprdata !=
NULL);
1071*isintegral =
EPSISINT(exprdata->constant, 0.0);
1076assert(child !=
NULL);
1093assert(exprhdlr !=
NULL);
1122 void* ownercreatedata
1142assert(expr !=
NULL);
1145assert(exprdata !=
NULL);
1147exprdata->constant = constant;
1161assert(expr !=
NULL);
1165assert(exprdata !=
NULL);
1171assert(exprdata->coefssize > nchildren);
1172exprdata->coefficients[nchildren] = childcoef;
1188assert(expr !=
NULL);
1191assert(exprdata !=
NULL);
1194exprdata->coefficients[i] *= constant;
1195exprdata->constant *= constant;
1206 void* ownercreatedata
1217assert(product !=
NULL);
1218assert(factor1 !=
NULL);
1220assert(factor2 !=
NULL);
1235 if( constant1 != 0.0 )
1237 for( i2 = 0; i2 < nchildren2; ++i2 )
1243 for( i1 = 0; i1 < nchildren1; ++i1 )
1253 if( constant2 != 0.0 )
1259 for( i2 = 0; i2 < nchildren2; ++i2 )
1270termfactors[0] = child1;
1271termfactors[1] = child2;
1281assert(!infeasible);
1285termprodsimplified = termprod;
1300assert(!infeasible);
1302*product = prodsimplified;
1320 void* ownercreatedata
1342 intmultinomialcoef;
1349assert(result !=
NULL);
1350assert(base !=
NULL);
1351assert(exponent > 1);
1353assert(exponent > 1.0);
1359haveconst = constant != 0.0;
1360 nterms= nchildren + (haveconst ? 1 : 0);
1375 for( i = 1; i <= exponent; ++i )
1376factorials[i] = factorials[i-1] * i;
1380 for( i = 0; i < nchildren; ++i )
1384childrenpower[i][1] = children[i];
1385 for( k = 2; k <= exponent; ++k )
1395assert(!infeasible);
1397childrenpower[i][k] = simplified;
1408multinomialcoef = factorials[exponent];
1409 for( i = 0; i <
nterms; ++i )
1411assert(beta[i] >= 0);
1412assert(beta[i] <= exponent);
1413multinomialcoef /= factorials[beta[i]];
1417 for( i = 0; i <
nterms; ++i )
1423newtermcoef = multinomialcoef;
1424 for( i = 0; i <
nterms; ++i )
1429 if( i ==
nterms-1 && haveconst )
1432newtermcoef *= pow(constant, (
double)beta[i]);
1437newtermcoef *= pow(coefs[i], (
double)beta[i]);
1470assert(!infeasible);
1472newterm = simplified;
1483 while( beta[betapos] == 0 )
1486 if( betapos ==
nterms-1 )
1494 while( beta[betapos] == 0 );
1497 for( i = betapos+1; i <
nterms; ++i )
1502beta[betapos+1] = restsum;
1505 if( beta[betapos] > 0 )
1522assert(!infeasible);
1524*result = simplified;
1527 for( i = nchildren-1; i >= 0; --i )
1530 for( k = exponent; k >= 2; --k )
1558assert(expr !=
NULL);
1561assert(exprdata !=
NULL);
1563 returnexprdata->coefficients;
1573assert(expr !=
NULL);
1576assert(exprdata !=
NULL);
1578 returnexprdata->constant;
#define SCIP_INTERVAL_INFINITY
exponential expression handler
power and signed power expression handlers
product expression handler
static SCIP_DECL_EXPRPRINT(printSum)
static SCIP_DECL_EXPRCOPYHDLR(copyhdlrSum)
static SCIP_DECL_EXPRBWDIFF(bwdiffSum)
static SCIP_DECL_EXPREVAL(evalSum)
static SCIP_DECL_SORTINDCOMP(sortExprComp)
static SCIP_DECL_EXPRFREEDATA(freedataSum)
static SCIP_DECL_EXPRCOMPARE(compareSum)
static SCIP_DECL_EXPRINTEGRALITY(integralitySum)
static SCIP_DECL_EXPRINTEVAL(intevalSum)
static SCIP_RETCODE createData(SCIP *scip, SCIP_EXPRDATA **exprdata, int ncoefficients, SCIP_Real *coefficients, SCIP_Real constant)
static SCIP_DECL_EXPRREVERSEPROP(reversepropSum)
static SCIP_DECL_EXPRESTIMATE(estimateSum)
static SCIP_DECL_EXPRBWFWDIFF(bwfwdiffSum)
static SCIP_DECL_EXPRHASH(hashSum)
static SCIP_DECL_EXPRCURVATURE(curvatureSum)
static SCIP_DECL_EXPRGETSYMDATA(getSymDataSum)
static SCIP_RETCODE simplifyTerm(SCIP *scip, SCIP_EXPR *duplicate, int idx, SCIP_Bool *changed, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
static SCIP_DECL_EXPRINITESTIMATES(initEstimatesSum)
static SCIP_DECL_EXPRSIMPLIFY(simplifySum)
#define EXPRHDLR_PRECEDENCE
static SCIP_DECL_EXPRMONOTONICITY(monotonicitySum)
static SCIP_DECL_EXPRFWDIFF(fwdiffSum)
static SCIP_DECL_EXPRCOPYDATA(copydataSum)
constant value expression handler
SCIP_RETCODE SCIPcreateExprProduct(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real coefficient, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
void SCIPsetConstantExprSum(SCIP_EXPR *expr, SCIP_Real constant)
void SCIPmultiplyByConstantExprSum(SCIP_EXPR *expr, SCIP_Real constant)
SCIP_RETCODE SCIPpowerExprSum(SCIP *scip, SCIP_EXPR **result, SCIP_EXPR *base, int exponent, SCIP_Bool simplify, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPappendExprSumExpr(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPR *child, SCIP_Real childcoef)
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_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 SCIPmultiplyBySumExprSum(SCIP *scip, SCIP_EXPR **product, SCIP_EXPR *factor1, SCIP_EXPR *factor2, SCIP_Bool simplify, 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 SCIPcreateExprPow(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_Real exponent, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPincludeExprhdlrSum(SCIP *scip)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
#define SCIPdebugMsgPrint
unsigned int SCIPcalcFibHash(SCIP_Real v)
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)))
void SCIPexprhdlrSetHash(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRHASH((*hash)))
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)))
SCIP_EXPRHDLR * SCIPgetExprhdlrSum(SCIP *scip)
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)
SCIP_RETCODE SCIPappendExprChild(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPR *child)
void SCIPexprSetData(SCIP_EXPR *expr, SCIP_EXPRDATA *exprdata)
int SCIPexprGetNChildren(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_RETCODE SCIPreplaceExprChild(SCIP *scip, SCIP_EXPR *expr, int childidx, SCIP_EXPR *newchild)
SCIP_Real * SCIPgetCoefsExprSum(SCIP_EXPR *expr)
SCIP_Bool SCIPisExprValue(SCIP *scip, 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_Real SCIPexprGetEvalValue(SCIP_EXPR *expr)
SCIP_EXPR ** SCIPexprGetChildren(SCIP_EXPR *expr)
SCIP_Real SCIPgetConstantExprSum(SCIP_EXPR *expr)
SCIP_INTERVAL SCIPexprGetActivity(SCIP_EXPR *expr)
SCIP_RETCODE SCIPduplicateExpr(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPR **copyexpr, SCIP_DECL_EXPR_MAPEXPR((*mapexpr)), void *mapexprdata, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
void SCIPcaptureExpr(SCIP_EXPR *expr)
SCIP_RETCODE SCIPsimplifyExpr(SCIP *scip, SCIP_EXPR *rootexpr, SCIP_EXPR **simplified, SCIP_Bool *changed, SCIP_Bool *infeasible, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_EXPRHDLR * SCIPexprGetHdlr(SCIP_EXPR *expr)
void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)
SCIP_Bool SCIPintervalIsEmpty(SCIP_Real infinity, SCIP_INTERVAL operand)
void SCIPintervalMulScalar(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2)
int SCIPintervalPropagateWeightedSum(SCIP_Real infinity, int noperands, SCIP_INTERVAL *operands, SCIP_Real *weights, SCIP_Real constant, SCIP_INTERVAL rhs, SCIP_INTERVAL *resultants, SCIP_Bool *infeasible)
void SCIPintervalAdd(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
void SCIPintervalSetEmpty(SCIP_INTERVAL *resultant)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPensureBlockMemoryArray(scip, ptr, arraysizeptr, minsize)
#define SCIPallocClearBufferArray(scip, ptr, num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBufferArrayNull(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
void SCIPsortInd(int *indarray, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int len)
static volatile int nterms
#define BMScopyMemoryArray(ptr, source, num)
#define BMSclearMemoryArray(ptr, num)
structs for symmetry computations
#define SCIP_DECL_EXPR_OWNERCREATE(x)
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