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 49 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 55 of file intervalarith.h.
Function Documentation
◆ SCIPintervalHasRoundingControl()
SCIP_Bool SCIPintervalHasRoundingControl | ( | void | ) |
returns whether rounding mode control is available
Definition at line 227 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 256 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 264 of file intervalarith.c.
References intervalGetRoundingMode(), negate(), and x.
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 332 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 340 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 348 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 356 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 364 of file intervalarith.c.
References negate().
Referenced by computeMaxBoundaryForBilinearProp(), computeMaxForBilinearProp(), and SCIPintervalPropagateWeightedSum().
◆ SCIPintervalGetInf()
SCIP_Real SCIPintervalGetInf | ( | SCIP_INTERVAL | interval | ) |
returns infimum of interval
- Parameters
-
interval interval
Definition at line 393 of file intervalarith.c.
References SCIP_Interval::inf.
Referenced by computeRoot(), 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 401 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 409 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 421 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by computeRangeForBilinearProp(), computeRevPropIntervalSin(), computeRoot(), estimateBivariateQuotient(), estimateUnivariateQuotient(), 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(), 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 435 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 446 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by computeRoot(), createAuxVar(), estimateVertexPolyhedralProduct(), 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 458 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 470 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 479 of file intervalarith.c.
References SCIP_Interval::inf, 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 488 of file intervalarith.c.
References SCIP_Interval::inf, 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 497 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, MAX, 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 516 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 529 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 545 of file intervalarith.c.
References SCIP_Interval::inf, MAX, 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 566 of file intervalarith.c.
References 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 597 of file intervalarith.c.
References SCIP_Interval::inf, MAX, 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 624 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 651 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 678 of file intervalarith.c.
References 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 705 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 755 of file intervalarith.c.
References 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 785 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 833 of file intervalarith.c.
References 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 844 of file intervalarith.c.
References SCIP_Interval::inf, infinity, intervalGetRoundingMode(), 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 904 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 964 of file intervalarith.c.
References 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 991 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 1047 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 1103 of file intervalarith.c.
References SCIP_Interval::inf, 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 1142 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 1196 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 1299 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 1339 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 1365 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 1391 of file intervalarith.c.
References SCIP_Interval::inf, 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 1419 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 1491 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 1552 of file intervalarith.c.
References SCIP_Interval::inf, 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 1891 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 1848 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 1598 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 1681 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 1756 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 2140 of file intervalarith.c.
References EPSISINT, SCIP_Interval::inf, MAX, 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 2221 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 2393 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 2466 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 2550 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 2618 of file intervalarith.c.
References SCIP_Interval::inf, 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 2634 of file intervalarith.c.
References SCIP_Interval::inf, 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 2650 of file intervalarith.c.
References SCIP_Interval::inf, 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 2688 of file intervalarith.c.
References SCIP_Interval::inf, 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 2730 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, 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 2857 of file intervalarith.c.
References SCIP_Interval::inf, 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 2884 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, 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 2983 of file intervalarith.c.
References 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 3078 of file intervalarith.c.
References SCIP_Interval::inf, 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 3113 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 3160 of file intervalarith.c.
References SCIP_Interval::inf, 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 3196 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(), 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 3400 of file intervalarith.c.
References SCIP_Interval::inf, MAX, 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 3466 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, 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 3727 of file intervalarith.c.
References b, CALCB, CALCR, EPSGE, EPSGT, EPSLE, EPSLT, EPSN, EPSZ, SCIP_Interval::inf, infinity, MAX, 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 4613 of file intervalarith.c.
References BMScopyMemoryArray, FALSE, SCIP_Interval::inf, 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().