Detailed Description
methods for interval arithmetics
Data Structures | |
struct | SCIP_Interval |
Typedefs | |
typedef struct SCIP_Interval | SCIP_INTERVAL |
typedef int | SCIP_ROUNDMODE |
Typedef Documentation
◆ SCIP_INTERVAL
typedef struct SCIP_Interval SCIP_INTERVAL |
Definition at line 58 of file intervalarith.h.
◆ SCIP_ROUNDMODE
typedef int SCIP_ROUNDMODE |
rounding mode of floating point operations (upwards, downwards, nearest, ...)
exact values depend on machine and compiler
Definition at line 64 of file intervalarith.h.
Function Documentation
◆ SCIPintervalHasRoundingControl()
SCIP_Bool SCIPintervalHasRoundingControl | ( | void | ) |
returns whether rounding mode control is available
Definition at line 239 of file intervalarith.c.
References FALSE.
Referenced by SCIPfindSimpleRational().
◆ SCIPintervalSetRoundingMode()
void SCIPintervalSetRoundingMode | ( | SCIP_ROUNDMODE | roundmode | ) |
sets rounding mode of floating point operations
- Parameters
-
roundmode rounding mode to activate
Definition at line 268 of file intervalarith.c.
References intervalSetRoundingMode().
Referenced by computeMaxBoundaryForBilinearProp(), computeMaxForBilinearProp(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPfindSimpleRational(), SCIPintervalCos(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalGetRoundingMode()
SCIP_ROUNDMODE SCIPintervalGetRoundingMode | ( | void | ) |
gets current rounding mode of floating point operations
Definition at line 276 of file intervalarith.c.
References intervalGetRoundingMode().
Referenced by computeMaxBoundaryForBilinearProp(), computeMaxForBilinearProp(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPfindSimpleRational(), SCIPintervalCos(), SCIPintervalEntropy(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalSetRoundingModeDownwards()
void SCIPintervalSetRoundingModeDownwards | ( | void | ) |
sets rounding mode of floating point operations to downwards rounding
Definition at line 344 of file intervalarith.c.
References intervalSetRoundingMode(), and SCIP_ROUND_DOWNWARDS.
Referenced by computeMaxForBilinearProp(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPfindSimpleRational(), SCIPintervalCos(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalSetRoundingModeUpwards()
void SCIPintervalSetRoundingModeUpwards | ( | void | ) |
sets rounding mode of floating point operations to upwards rounding
Definition at line 352 of file intervalarith.c.
References intervalSetRoundingMode(), and SCIP_ROUND_UPWARDS.
Referenced by computeMaxBoundaryForBilinearProp(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), and SCIPintervalEntropy().
◆ SCIPintervalSetRoundingModeToNearest()
void SCIPintervalSetRoundingModeToNearest | ( | void | ) |
sets rounding mode of floating point operations to nearest rounding
Definition at line 360 of file intervalarith.c.
References intervalSetRoundingMode(), and SCIP_ROUND_NEAREST.
Referenced by SCIPintervalEntropy().
◆ SCIPintervalSetRoundingModeTowardsZero()
void SCIPintervalSetRoundingModeTowardsZero | ( | void | ) |
sets rounding mode of floating point operations to towards zero rounding
Definition at line 368 of file intervalarith.c.
References intervalSetRoundingMode(), and SCIP_ROUND_ZERO.
◆ SCIPintervalNegateReal()
negates a number in a way that the compiler does not optimize it away
- Parameters
-
x number to negate
Definition at line 376 of file intervalarith.c.
Referenced by computeMaxBoundaryForBilinearProp(), computeMaxForBilinearProp(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalGetInf()
SCIP_Real SCIPintervalGetInf | ( | SCIP_INTERVAL | interval | ) |
returns infimum of interval
- Parameters
-
interval interval
Definition at line 405 of file intervalarith.c.
References SCIP_Interval::inf.
Referenced by computeRoot(), findMonoidalQuadRoot(), getFeasiblePointsBilinear(), intEvalQuotient(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), propagateBoundsQuadExpr(), provedBound(), reverseProp(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalSolveUnivariateQuadExpression(), SCIPlpGetModifiedProvedPseudoObjval(), and startProbing().
◆ SCIPintervalGetSup()
SCIP_Real SCIPintervalGetSup | ( | SCIP_INTERVAL | interval | ) |
returns supremum of interval
- Parameters
-
interval interval
Definition at line 413 of file intervalarith.c.
References SCIP_Interval::sup.
Referenced by getFeasiblePointsBilinear(), intEvalQuotient(), nlrowCalcActivityBounds(), propagateBoundsQuadExpr(), reverseProp(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalSolveUnivariateQuadExpression(), and startProbing().
◆ SCIPintervalSet()
void SCIPintervalSet | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | value | ||
) |
stores given value as interval
- Parameters
-
resultant interval to store value into value value to store
Definition at line 421 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by computeMaxForBilinearProp(), getFeasiblePointsBilinear(), intEvalQuotient(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), propagateBoundsQuadExpr(), provedBound(), reverseProp(), reversePropBilinear(), reversepropQuotient(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalDiv(), SCIPintervalEntropy(), SCIPintervalIntersectEps(), SCIPintervalPower(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarScalar(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalSetBounds()
void SCIPintervalSetBounds | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | inf, | ||
SCIP_Real | sup | ||
) |
stores given infimum and supremum as interval
- Parameters
-
resultant interval to store value into inf value to store as infimum sup value to store as supremum
Definition at line 433 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by computeRangeForBilinearProp(), computeRevPropIntervalSin(), computeRoot(), estimateBivariateQuotient(), estimateUnivariateQuotient(), findMonoidalQuadRoot(), getFeasiblePointsBilinear(), intevalBilinear(), nlrowCalcActivityBounds(), presolveRedundantConss(), propConss(), provedBound(), reverseProp(), SCIP_DECL_EXPR_INTEVALVAR(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIPexprcurvPower(), SCIPexprcurvPowerInv(), SCIPintervalCos(), SCIPintervalEntropy(), SCIPintervalPower(), SCIPintervalPowerScalarInverse(), SCIPintervalQuadBivar(), SCIPintervalSin(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalSetEmpty()
void SCIPintervalSetEmpty | ( | SCIP_INTERVAL * | resultant | ) |
sets interval to empty interval, which will be [1.0, -1.0]
- Parameters
-
resultant resultant interval of operation
Definition at line 447 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by computeRevPropIntervalSin(), forwardPropExpr(), intevalBilinear(), intEvalQuotient(), reverseProp(), reversePropBilinear(), reversepropQuotient(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_NLHDLRINTEVAL(), SCIPexprEvalActivity(), SCIPintervalEntropy(), SCIPintervalLog(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarInverse(), SCIPintervalQuad(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIPintervalSquareRoot().
◆ SCIPintervalIsEmpty()
SCIP_Bool SCIPintervalIsEmpty | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is empty, i.e., whether inf > sup
- Parameters
-
infinity value for infinity operand operand of operation
Definition at line 458 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
Referenced by computeRoot(), createAuxVar(), estimateVertexPolyhedralProduct(), findMonoidalQuadRoot(), forwardPropExpr(), getFeasiblePointsBilinear(), intevalBilinear(), intEvalQuotient(), isIntervalBetter(), presolveRedundantConss(), propagateBoundsQuadExpr(), propConss(), reverseProp(), reversePropQueue(), reversepropQuotient(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalAbs(), SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalCos(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalEntropy(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalMax(), SCIPintervalMin(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPower(), SCIPintervalPowerScalar(), SCIPintervalPropagateWeightedSum(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalSign(), SCIPintervalSignPowerScalar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSquare(), SCIPintervalSquareRoot(), SCIPintervalSub(), SCIPtightenExprIntervalNonlinear(), and tightenAuxVarBounds().
◆ SCIPintervalSetEntire()
void SCIPintervalSetEntire | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant | ||
) |
sets interval to entire [-infinity, +infinity]
- Parameters
-
infinity value for infinity resultant resultant interval of operation
Definition at line 470 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, and SCIP_Interval::sup.
Referenced by computeRangeForBilinearProp(), createAuxVar(), forwardPropExpr(), intevalBilinear(), intEvalQuotient(), reversepropQuotient(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPexprCreate(), SCIPexprEvalActivity(), SCIPgetExprBoundsNonlinear(), SCIPintervalPropagateWeightedSum(), SCIPintervalScalprod(), SCIPintervalScalprodScalarsInf(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalIsEntire()
SCIP_Bool SCIPintervalIsEntire | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is entire, i.e., whether inf ≤ -infinity and sup ≥ infinity
- Parameters
-
infinity value for infinity operand operand of operation
Definition at line 482 of file intervalarith.c.
References SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
Referenced by nlrowCalcActivityBounds(), reversePropQueue(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalPropagateWeightedSum(), and SCIPtightenExprIntervalNonlinear().
◆ SCIPintervalIsPositiveInfinity()
SCIP_Bool SCIPintervalIsPositiveInfinity | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is positive infinity, i.e., [infinity, infinity]
- Parameters
-
infinity value for infinity operand operand of operation
Definition at line 491 of file intervalarith.c.
References SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
◆ SCIPintervalIsNegativeInfinity()
SCIP_Bool SCIPintervalIsNegativeInfinity | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is negative infinity, i.e., [-infinity, -infinity]
- Parameters
-
infinity value for infinity operand operand of operation
Definition at line 500 of file intervalarith.c.
References SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
◆ SCIPintervalIsSubsetEQ()
SCIP_Bool SCIPintervalIsSubsetEQ | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
indicates whether operand1 is contained in operand2
- Parameters
-
infinity value for infinity operand1 first operand of operation operand2 second operand of operation
Definition at line 509 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, infinity, MAX, MIN, SCIP_Interval::sup, and TRUE.
Referenced by isIntervalBetter(), presolveRedundantConss(), and reverseProp().
◆ SCIPintervalAreDisjoint()
SCIP_Bool SCIPintervalAreDisjoint | ( | SCIP_INTERVAL | operand1, |
SCIP_INTERVAL | operand2 | ||
) |
indicates whether operand1 and operand2 are disjoint
- Parameters
-
operand1 first operand of operation operand2 second operand of operation
Definition at line 528 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
◆ SCIPintervalAreDisjointEps()
SCIP_Bool SCIPintervalAreDisjointEps | ( | SCIP_Real | eps, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
indicates whether operand1 and operand2 are disjoint with epsilon tolerance
Returns whether minimal (relative) distance of intervals is larger than epsilon. Same as SCIPintervalIsEmpty(SCIPintervalIntersectEps(operand1, operand2))
.
- Parameters
-
eps epsilon operand1 first operand of operation operand2 second operand of operation
Definition at line 541 of file intervalarith.c.
References eps, FALSE, SCIP_Interval::inf, SCIPrelDiff(), and SCIP_Interval::sup.
◆ SCIPintervalIntersect()
void SCIPintervalIntersect | ( | SCIP_INTERVAL * | resultant, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
intersection of two intervals
- Parameters
-
resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 557 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by reverseProp(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINTEVAL(), SCIPintervalIntersectEps(), SCIPintervalPowerScalarInverse(), SCIPintervalPropagateWeightedSum(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar().
◆ SCIPintervalIntersectEps()
void SCIPintervalIntersectEps | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | eps, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
intersection of two intervals with epsilon tolerance
If intersection of operand1 and operand2 is empty, but minimal (relative) distance of intervals is at most epsilon, then set resultant to singleton containing the point in operand1 that is closest to operand2, i.e.,
resultant = { operand1.sup }
, ifoperand1.sup
<operand2.inf
andreldiff(operand2.inf,operand1.sup)
≤ epsresultant = { operand1.inf }
, ifoperand1.inf
>operand2.sup
andreldiff(operand1.inf,operand2.sup)
≤ epsresultant
= intersection ofoperand1
andoperand2
, otherwise
- Parameters
-
resultant resultant interval of operation eps epsilon operand1 first operand of operation operand2 second operand of operation
Definition at line 578 of file intervalarith.c.
References eps, SCIP_Interval::inf, NULL, SCIPintervalIntersect(), SCIPintervalSet(), SCIPrelDiff(), and SCIP_Interval::sup.
Referenced by estimateBivariateQuotient(), estimateUnivariateQuotient(), forwardPropExpr(), SCIP_DECL_NLHDLRESTIMATE(), SCIPgetExprBoundsNonlinear(), and SCIPtightenExprIntervalNonlinear().
◆ SCIPintervalUnify()
void SCIPintervalUnify | ( | SCIP_INTERVAL * | resultant, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
interval enclosure of the union of two intervals
- Parameters
-
resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 609 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by intEvalQuotient(), reversepropQuotient(), SCIP_DECL_EXPRREVERSEPROP(), SCIPintervalPowerScalarInverse(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalAddInf()
void SCIPintervalAddInf | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
adds operand1 and operand2 and stores infimum of result in infimum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 636 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, and SCIP_ROUND_DOWNWARDS.
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsInf().
◆ SCIPintervalAddSup()
void SCIPintervalAddSup | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
adds operand1 and operand2 and stores supremum of result in supremum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 663 of file intervalarith.c.
References infinity, intervalGetRoundingMode(), NULL, SCIP_ROUND_UPWARDS, and SCIP_Interval::sup.
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalAdd()
void SCIPintervalAdd | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
adds operand1 and operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 690 of file intervalarith.c.
References infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), and SCIPintervalIsEmpty().
Referenced by lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalQuadBivar(), SCIPintervalSin(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalAddScalar()
void SCIPintervalAddScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
adds operand1 and scalar operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 717 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by intEvalQuotient(), reversepropQuotient(), SCIP_DECL_EXPRREVERSEPROP(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSubScalar().
◆ SCIPintervalAddVectors()
void SCIPintervalAddVectors | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_INTERVAL * | operand2 | ||
) |
adds vector operand1 and vector operand2 and stores result in vector resultant
- Parameters
-
infinity value for infinity resultant array of resultant intervals of operation length length of arrays operand1 array of first operands of operation operand2 array of second operands of operation
Definition at line 767 of file intervalarith.c.
References infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), and SCIPintervalAddSup().
◆ SCIPintervalSub()
void SCIPintervalSub | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
subtracts operand2 from operand1 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 797 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by lpUpdateVarColumnProved(), lpUpdateVarProved(), provedBound(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalCos(), SCIPintervalSin(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalSubScalar()
void SCIPintervalSubScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
subtracts scalar operand2 from operand1 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 845 of file intervalarith.c.
References infinity, and SCIPintervalAddScalar().
Referenced by reversepropQuotient().
◆ SCIPintervalMulInf()
void SCIPintervalMulInf | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
multiplies operand1 with operand2 and stores infimum of result in infimum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation; can be +/-inf operand2 second operand of operation; can be +/-inf
Definition at line 856 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), MIN, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), and SCIP_Interval::sup.
Referenced by SCIPintervalMul(), and SCIPintervalScalprod().
◆ SCIPintervalMulSup()
void SCIPintervalMulSup | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
multiplies operand1 with operand2 and stores supremum of result in supremum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation; can be +/-inf operand2 second operand of operation; can be +/-inf
Definition at line 916 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), MAX, NULL, SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPintervalMulScalarSup(), and SCIP_Interval::sup.
Referenced by SCIPintervalMul(), and SCIPintervalScalprod().
◆ SCIPintervalMul()
void SCIPintervalMul | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
multiplies operand1 with operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation; can be +/-inf operand2 second operand of operation; can be +/-inf
Definition at line 976 of file intervalarith.c.
References infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPintervalMulInf(), and SCIPintervalMulSup().
Referenced by lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), SCIPintervalDiv(), SCIPintervalPower(), SCIPintervalQuad(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalMulScalarInf()
void SCIPintervalMulScalarInf | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
multiplies operand1 with scalar operand2 and stores infimum of result in infimum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation; can be +/- inf
Definition at line 1003 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulInf(), SCIPintervalMulScalar(), and SCIPintervalScalprodScalarsInf().
◆ SCIPintervalMulScalarSup()
void SCIPintervalMulScalarSup | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
multiplies operand1 with scalar operand2 and stores supremum of result in supremum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation; can be +/- inf
Definition at line 1059 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulScalar(), SCIPintervalMulSup(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalMulScalar()
void SCIPintervalMulScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
multiplies operand1 with scalar operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1115 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), and SCIP_Interval::sup.
Referenced by computeRangeForBilinearProp(), intevalBilinear(), intEvalQuotient(), nlrowCalcActivityBounds(), reversepropQuotient(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPintervalCos(), SCIPintervalPropagateWeightedSum(), SCIPintervalSin(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalDiv()
void SCIPintervalDiv | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
divides operand1 by operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1154 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPintervalMul(), SCIPintervalSet(), and SCIP_Interval::sup.
Referenced by intEvalQuotient(), reversepropQuotient(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalDivScalar()
void SCIPintervalDivScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
divides operand1 by scalar operand2 and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1208 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by computeMaxForBilinearProp(), intEvalQuotient(), propagateBoundsLinExpr(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalScalprod()
void SCIPintervalScalprod | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_INTERVAL * | operand2 | ||
) |
computes the scalar product of two vectors of intervals and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation length length of vectors operand1 first vector as array of intervals; can have +/-inf entries operand2 second vector as array of intervals; can have +/-inf entries
Definition at line 1311 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalMulInf(), SCIPintervalMulSup(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
◆ SCIPintervalScalprodScalarsInf()
void SCIPintervalScalprodScalarsInf | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_Real * | operand2 | ||
) |
computes the scalar product of a vector of intervals and a vector of scalars and stores infimum of result in infimum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation length length of vectors operand1 first vector as array of intervals operand2 second vector as array of scalars; can have +/-inf entries
Definition at line 1351 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), SCIP_ROUND_DOWNWARDS, SCIPintervalAddInf(), SCIPintervalMulScalarInf(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
◆ SCIPintervalScalprodScalarsSup()
void SCIPintervalScalprodScalarsSup | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_Real * | operand2 | ||
) |
computes the scalar product of a vector of intervals and a vector of scalars and stores supremum of result in supremum of resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation length length of vectors operand1 first vector as array of intervals operand2 second vector as array of scalars; can have +/-inf entries
Definition at line 1377 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), SCIP_ROUND_UPWARDS, SCIPintervalAddSup(), SCIPintervalMulScalarSup(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
◆ SCIPintervalScalprodScalars()
void SCIPintervalScalprodScalars | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_Real * | operand2 | ||
) |
computes the scalar product of a vector of intervals and a vector of scalars and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation length length of vectors operand1 first vector as array of intervals operand2 second vector as array of scalars; can have +/-inf entries
Definition at line 1403 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalScalprodScalarsInf(), SCIPintervalScalprodScalarsSup(), and SCIP_Interval::sup.
◆ SCIPintervalSquare()
void SCIPintervalSquare | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
squares operand and stores result in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 1431 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), MAX, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIP_Interval::sup, x, and y.
◆ SCIPintervalSquareRoot()
void SCIPintervalSquareRoot | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores (positive part of) square root of operand in resultant
- Attention
- we assume a correctly rounded sqrt(double) function when rounding is to nearest
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 1503 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by computeMaxForBilinearProp().
◆ SCIPintervalPower()
void SCIPintervalPower | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
stores operand1 to the power of operand2 in resultant
uses SCIPintervalPowerScalar if operand2 is a scalar, otherwise computes exp(op2*log(op1))
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1564 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIPintervalExp(), SCIPintervalIsEmpty(), SCIPintervalLog(), SCIPintervalMul(), SCIPintervalPowerScalar(), SCIPintervalSet(), SCIPintervalSetBounds(), and SCIP_Interval::sup.
Referenced by SCIPintervalPowerScalarInverse().
◆ SCIPintervalPowerScalar()
void SCIPintervalPowerScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
stores operand1 to the power of the scalar operand2 in resultant
- Attention
- we assume a correctly rounded pow(double) function when rounding is to nearest
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1903 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), MAX, NULL, SCIP_Bool, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalIsEmpty(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
◆ SCIPintervalPowerScalarScalar()
void SCIPintervalPowerScalarScalar | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | operand1, | ||
SCIP_Real | operand2 | ||
) |
stores bounds on the power of a scalar operand1 to a scalar operand2 in resultant
Both operands need to be finite numbers. Needs to have operand1 ≥ 0 or operand2 integer and needs to have operand2 ≥ 0 if operand1 = 0.
- Attention
- we assume a correctly rounded pow(double) function when rounding is to nearest
- Parameters
-
resultant resultant of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1860 of file intervalarith.c.
References SCIP_Interval::inf, intervalGetRoundingMode(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalSet(), SCIPnextafter(), and SCIP_Interval::sup.
◆ SCIPintervalPowerScalarIntegerInf()
computes lower bound on power of a scalar operand1 to an integer operand2
Both operands need to be finite numbers. Needs to have operand1 ≥ 0 and need to have operand2 ≥ 0 if operand1 = 0.
- Parameters
-
operand1 first operand of operation operand2 second operand of operation
Definition at line 1610 of file intervalarith.c.
References intervalGetRoundingMode(), intervalSetRoundingMode(), SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalPowerScalarIntegerSup(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerSup().
◆ SCIPintervalPowerScalarIntegerSup()
computes upper bound on power of a scalar operand1 to an integer operand2
Both operands need to be finite numbers. Needs to have operand1 ≥ 0 and needs to have operand2 ≥ 0 if operand1 = 0.
- Parameters
-
operand1 first operand of operation operand2 second operand of operation
Definition at line 1693 of file intervalarith.c.
References intervalGetRoundingMode(), intervalSetRoundingMode(), SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalPowerScalarIntegerInf(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerInf().
◆ SCIPintervalPowerScalarInteger()
void SCIPintervalPowerScalarInteger | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | operand1, | ||
int | operand2 | ||
) |
computes bounds on power of a scalar operand1 to an integer operand2
Both operands need to be finite numbers. Needs to have operand1 ≥ 0 and needs to have operand2 ≥ 0 if operand1 = 0.
- Parameters
-
resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 1768 of file intervalarith.c.
References SCIP_Interval::inf, intervalGetRoundingMode(), intervalSetRoundingMode(), negate(), SCIP_Real, SCIP_REAL_MAX, SCIP_ROUND_UPWARDS, SCIPintervalPowerScalarInteger(), SCIPintervalReciprocal(), SCIPintervalSet(), SCIP_Interval::sup, and TRUE.
Referenced by SCIPintervalPowerScalarInteger().
◆ SCIPintervalPowerScalarInverse()
void SCIPintervalPowerScalarInverse | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | basedomain, | ||
SCIP_Real | exponent, | ||
SCIP_INTERVAL | image | ||
) |
given an interval for the image of a power operation, computes an interval for the origin
That is, for \(y = x^p\) with the exponent \(p\) a given scalar and \(y\) = image
a given interval, computes \(x \subseteq \text{basedomain}\) such that \(y \in x^p\) and such that for all \(z \in \text{basedomain} \setminus x: z^p \not \in y\).
- Parameters
-
infinity value for infinity resultant resultant interval of operation basedomain domain of base exponent exponent image interval image of power
Definition at line 2152 of file intervalarith.c.
References EPSISINT, SCIP_Interval::inf, infinity, MAX, MIN, NULL, SCIPintervalIntersect(), SCIPintervalPower(), SCIPintervalReciprocal(), SCIPintervalSetBounds(), SCIPintervalSetEmpty(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRREVERSEPROP().
◆ SCIPintervalSignPowerScalar()
void SCIPintervalSignPowerScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
stores operand1 to the signed power of the scalar positive operand2 in resultant
The signed power of x w.r.t. an exponent n ≥ 0 is given as \(\mathrm{sign}(x) |x|^n\).
- Attention
- we assume correctly rounded sqrt(double) and pow(double) functions when rounding is to nearest
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 2233 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), negate(), NULL, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and SCIP_DECL_EXPRREVERSEPROP().
◆ SCIPintervalReciprocal()
void SCIPintervalReciprocal | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
computes the reciprocal of an interval
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2405 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRREVERSEPROP(), SCIPintervalPowerScalarInteger(), and SCIPintervalPowerScalarInverse().
◆ SCIPintervalExp()
void SCIPintervalExp | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores exponential of operand in resultant
- Attention
- we assume a correctly rounded exp(double) function when rounding is to nearest
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2478 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalIsEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), and SCIPintervalPower().
◆ SCIPintervalLog()
void SCIPintervalLog | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores natural logarithm of operand in resultant
- Attention
- we assume a correctly rounded log(double) function when rounding is to nearest
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2562 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), and SCIPintervalPower().
◆ SCIPintervalMin()
void SCIPintervalMin | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
stores minimum of operands in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 2630 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MIN, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
◆ SCIPintervalMax()
void SCIPintervalMax | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
stores maximum of operands in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand1 first operand of operation operand2 second operand of operation
Definition at line 2646 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
◆ SCIPintervalAbs()
void SCIPintervalAbs | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores absolute value of operand in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2662 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalSin()
void SCIPintervalSin | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores sine value of operand in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2700 of file intervalarith.c.
References SCIP_Interval::inf, infinity, pi_d_l, pi_d_u, SCIP_Real, SCIPintervalAdd(), SCIPintervalCos(), SCIPintervalMulScalar(), SCIPintervalSetBounds(), SCIPintervalSub(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalCos()
void SCIPintervalCos | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores cosine value of operand in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2742 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, MIN, NULL, pi_d_l, pi_d_u, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPdebugMessage, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalar(), SCIPintervalSetBounds(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSub(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and SCIPintervalSin().
◆ SCIPintervalSign()
void SCIPintervalSign | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores sign of operand in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2869 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
◆ SCIPintervalEntropy()
void SCIPintervalEntropy | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores entropy of operand in resultant
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2896 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, MAX3, MIN, NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSetEmpty(), SCIPintervalSetRoundingModeToNearest(), SCIPintervalSetRoundingModeUpwards(), SCIPnegateReal(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by reverseProp(), and SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalQuadUpperBound()
SCIP_Real SCIPintervalQuadUpperBound | ( | SCIP_Real | infinity, |
SCIP_Real | a, | ||
SCIP_INTERVAL | b_, | ||
SCIP_INTERVAL | x | ||
) |
computes exact upper bound on \( a x^2 + b x \) for x in [xlb, xub], b an interval, and a scalar
Uses Algorithm 2.2 from Domes and Neumaier: Constraint propagation on quadratic constraints (2008).
- Parameters
-
infinity value for infinity a coefficient of x^2 b_ coefficient of x x range of x
Definition at line 2995 of file intervalarith.c.
References a, b, SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), MAX, negate(), SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalIsEmpty(), SCIPintervalQuadUpperBound(), SCIP_Interval::sup, and x.
Referenced by SCIP_DECL_NLHDLRINTEVAL(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalQuad()
void SCIPintervalQuad | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_Real | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | xrng | ||
) |
stores range of quadratic term in resultant
given scalar a and intervals b and x, computes interval for \( a x^2 + b x \)
- Parameters
-
infinity value for infinity resultant resultant interval of operation sqrcoeff coefficient of x^2 lincoeff coefficient of x xrng range of x
Definition at line 3090 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_Real, SCIPintervalIsEmpty(), SCIPintervalMul(), SCIPintervalQuadUpperBound(), SCIPintervalSetEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalQuadBivar(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalSolveUnivariateQuadExpressionPositive()
void SCIPintervalSolveUnivariateQuadExpressionPositive | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | rhs, | ||
SCIP_INTERVAL | xbnds | ||
) |
computes interval with positive solutions of a quadratic equation with interval coefficients
Given intervals a, b, and c, this function computes an interval that contains all positive solutions of \( a x^2 + b x \in c\) within xbnds.
- Parameters
-
infinity value for infinity resultant resultant interval of operation sqrcoeff coefficient of x^2 lincoeff coefficient of x rhs right hand side of equation xbnds bounds on x
Definition at line 3125 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIPdebugMessage, SCIPdebugPrintf, SCIPintervalIntersect(), SCIPintervalSetEmpty(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), and SCIPintervalSolveUnivariateQuadExpressionNegative().
◆ SCIPintervalSolveUnivariateQuadExpressionNegative()
void SCIPintervalSolveUnivariateQuadExpressionNegative | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | rhs, | ||
SCIP_INTERVAL | xbnds | ||
) |
computes interval with negative solutions of a quadratic equation with interval coefficients
Given intervals a, b, and c, this function computes an interval that contains all negative solutions of \( a x^2 + b x \in c\) within xbnds.
- Parameters
-
infinity value for infinity resultant resultant interval of operation sqrcoeff coefficient of x^2 lincoeff coefficient of x rhs right hand side of equation xbnds bounds on x
Definition at line 3172 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_Real, SCIPintervalSolveUnivariateQuadExpressionPositive(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar()
void SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_Real | sqrcoeff, | ||
SCIP_Real | lincoeff, | ||
SCIP_Real | rhs, | ||
SCIP_INTERVAL | xbnds | ||
) |
computes positive solutions of a quadratic equation with scalar coefficients
Givens scalar a, b, and c, this function computes an interval that contains all positive solutions of \( a x^2 + b x \geq c\) within xbnds. Implements Algorithm 3.2 from Domes and Neumaier: Constraint propagation on quadratic constraints (2008).
- Parameters
-
infinity value for infinity resultant resultant interval of operation sqrcoeff coefficient of x^2 lincoeff coefficient of x rhs right hand side of equation xbnds bounds on x
Definition at line 3208 of file intervalarith.c.
References b, SCIP_Interval::inf, infinity, intervalGetRoundingMode(), intervalSetRoundingMode(), MAX, negate(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalIntersect(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by computeRoot(), findMonoidalQuadRoot(), and SCIPintervalSolveUnivariateQuadExpressionPositive().
◆ SCIPintervalSolveUnivariateQuadExpression()
void SCIPintervalSolveUnivariateQuadExpression | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | rhs, | ||
SCIP_INTERVAL | xbnds | ||
) |
solves a quadratic equation with interval coefficients
Given intervals a, b and c, this function computes an interval that contains all solutions of \( a x^2 + b x \in c\) within xbnds.
- Parameters
-
infinity value for infinity resultant resultant interval of operation sqrcoeff coefficient of x^2 lincoeff coefficient of x rhs right hand side of equation xbnds bounds on x
Definition at line 3412 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, MIN, NULL, SCIPdebugMessage, SCIPintervalDiv(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPintervalSolveUnivariateQuadExpressionNegative(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by getFeasiblePointsBilinear(), propagateBoundsQuadExpr(), SCIP_DECL_EXPRREVERSEPROP(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalQuadBivar()
void SCIPintervalQuadBivar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_Real | ax, | ||
SCIP_Real | ay, | ||
SCIP_Real | axy, | ||
SCIP_Real | bx, | ||
SCIP_Real | by, | ||
SCIP_INTERVAL | xbnds, | ||
SCIP_INTERVAL | ybnds | ||
) |
stores range of bivariate quadratic term in resultant
Given scalars \(a_x\), \(a_y\), \(a_{xy}\), \(b_x\), and \(b_y\) and intervals for \(x\) and \(y\), computes interval for \( a_x x^2 + a_y y^2 + a_{xy} x y + b_x x + b_y y \).
- Attention
- The operations are not applied rounding-safe here!
- Parameters
-
infinity value for infinity in interval arithmetics resultant buffer where to store result of operation ax square coefficient of x ay square coefficient of y axy bilinear coefficients bx linear coefficient of x by linear coefficient of y xbnds bounds on x ybnds bounds on y
Definition at line 3478 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPdebugMessage, SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalQuad(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIP_Interval::sup, x, and y.
◆ SCIPintervalSolveBivariateQuadExpressionAllScalar()
void SCIPintervalSolveBivariateQuadExpressionAllScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_Real | ax, | ||
SCIP_Real | ay, | ||
SCIP_Real | axy, | ||
SCIP_Real | bx, | ||
SCIP_Real | by, | ||
SCIP_INTERVAL | rhs, | ||
SCIP_INTERVAL | xbnds, | ||
SCIP_INTERVAL | ybnds | ||
) |
solves a bivariate quadratic equation for the first variable
Given scalars \(a_x\), \(a_y\), \(a_{xy}\), \(b_x\) and \(b_y\), and intervals for \(x\), \(y\), and rhs, computes \( \{ x \in \mathbf{x} : \exists y \in \mathbf{y} : a_x x^2 + a_y y^2 + a_{xy} x y + b_x x + b_y y \in \mathbf{\mbox{rhs}} \} \).
- Attention
- the operations are not applied rounding-safe here
- Parameters
-
infinity value for infinity in interval arithmetics resultant buffer where to store result of operation ax square coefficient of x ay square coefficient of y axy bilinear coefficients bx linear coefficient of x by linear coefficient of y rhs right-hand-side of equation xbnds bounds on x ybnds bounds on y
Definition at line 3739 of file intervalarith.c.
References b, CALCB, CALCR, EPSGE, EPSGT, EPSLE, EPSLT, EPSN, EPSZ, SCIP_Interval::inf, infinity, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPintervalAddScalar(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalMulScalar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSetEmpty(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionNegative(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSub(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalPropagateWeightedSum()
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 | ||
) |
propagates a weighted sum of intervals in a given interval
Given \(\text{constant} + \sum_i \text{weights}_i \text{operands}_i \in \text{rhs}\), computes possibly tighter interval for each term.
- Attention
- Valid values are returned in resultants only if any tightening has been found and no empty interval, that is, function returns with non-zero and
*infeasible
= FALSE.
- Returns
- Number of terms for which resulting interval is smaller than operand interval.
- Parameters
-
infinity value for infinity in interval arithmetics noperands number of operands (intervals) to propagate operands intervals to propagate weights weights of intervals in sum constant constant in sum rhs right-hand-side interval resultants array to store propagated intervals, if any reduction is found at all (check return code and *infeasible) infeasible buffer to store if propagation produced empty interval
Definition at line 4625 of file intervalarith.c.
References BMScopyMemoryArray, FALSE, SCIP_Interval::inf, infinity, NULL, SCIP_Real, SCIPdebugMessage, SCIPdebugPrintf, SCIPintervalDivScalar(), SCIPintervalGetRoundingMode(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalIsEntire(), SCIPintervalMulScalar(), SCIPintervalNegateReal(), SCIPintervalSetEntire(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIP_Interval::sup, and TRUE.
Referenced by reversePropagateLinearExpr(), and SCIP_DECL_EXPRREVERSEPROP().