Detailed Description
interval arithmetics for provable bounds
Definition in file intervalarith.h.
#include "scip/def.h"
Go to the source code of this file.
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 42 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, so we define a corresponding enum in the header file
Definition at line 46 of file intervalarith.h.
Function Documentation
◆ SCIPintervalHasRoundingControl()
SCIP_EXPORT SCIP_Bool SCIPintervalHasRoundingControl | ( | void | ) |
returns whether rounding mode control is available
Definition at line 203 of file intervalarith.c.
References FALSE.
Referenced by SCIPfindSimpleRational().
◆ SCIPintervalSetRoundingMode()
SCIP_EXPORT void SCIPintervalSetRoundingMode | ( | SCIP_ROUNDMODE | roundmode | ) |
sets rounding mode of floating point operations
- Parameters
-
roundmode rounding mode to activate
Definition at line 211 of file intervalarith.c.
References SCIPerrorMessage.
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateConstraintSides(), SCIPfindSimpleRational(), SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalAddVectors(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalMul(), SCIPintervalMulScalar(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalScalprod(), SCIPintervalScalprodScalars(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeToNearest(), SCIPintervalSetRoundingModeTowardsZero(), SCIPintervalSetRoundingModeUpwards(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), SCIPintervalSquare(), and SCIPintervalSub().
◆ SCIPintervalGetRoundingMode()
SCIP_EXPORT SCIP_ROUNDMODE SCIPintervalGetRoundingMode | ( | void | ) |
gets current rounding mode of floating point operations
Definition at line 219 of file intervalarith.c.
References negate(), SCIP_ROUND_NEAREST, and x.
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateConstraintSides(), SCIPfindSimpleRational(), SCIPintervalAdd(), SCIPintervalAddInf(), SCIPintervalAddScalar(), SCIPintervalAddSup(), SCIPintervalAddVectors(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalPowerScalarScalar(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalScalprod(), SCIPintervalScalprodScalars(), SCIPintervalScalprodScalarsInf(), SCIPintervalScalprodScalarsSup(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), SCIPintervalSquare(), SCIPintervalSquareRoot(), and SCIPintervalSub().
◆ SCIPintervalSetRoundingModeDownwards()
SCIP_EXPORT void SCIPintervalSetRoundingModeDownwards | ( | void | ) |
sets rounding mode of floating point operations to downwards rounding
Definition at line 291 of file intervalarith.c.
References SCIP_ROUND_DOWNWARDS, and SCIPintervalSetRoundingMode().
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateConstraintSides(), and SCIPfindSimpleRational().
◆ SCIPintervalSetRoundingModeUpwards()
SCIP_EXPORT void SCIPintervalSetRoundingModeUpwards | ( | void | ) |
sets rounding mode of floating point operations to upwards rounding
Definition at line 299 of file intervalarith.c.
References SCIP_ROUND_UPWARDS, and SCIPintervalSetRoundingMode().
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), and propagateBoundsQuadVar().
◆ SCIPintervalSetRoundingModeToNearest()
SCIP_EXPORT void SCIPintervalSetRoundingModeToNearest | ( | void | ) |
sets rounding mode of floating point operations to nearest rounding
Definition at line 307 of file intervalarith.c.
References SCIP_ROUND_NEAREST, and SCIPintervalSetRoundingMode().
◆ SCIPintervalSetRoundingModeTowardsZero()
SCIP_EXPORT void SCIPintervalSetRoundingModeTowardsZero | ( | void | ) |
sets rounding mode of floating point operations to towards zero rounding
Definition at line 315 of file intervalarith.c.
References SCIP_ROUND_ZERO, and SCIPintervalSetRoundingMode().
◆ SCIPintervalNegateReal()
SCIP_EXPORT SCIP_Real SCIPintervalNegateReal | ( | SCIP_Real | x | ) |
negates a number in a way that the compiler does not optimize it away
- Parameters
-
x number to negate
Definition at line 323 of file intervalarith.c.
References negate().
Referenced by consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBoundsCons(), and propagateConstraintSides().
◆ SCIPintervalGetInf()
SCIP_EXPORT SCIP_Real SCIPintervalGetInf | ( | SCIP_INTERVAL | interval | ) |
returns infimum of interval
- Parameters
-
interval interval
Definition at line 352 of file intervalarith.c.
References SCIP_Interval::inf.
Referenced by addIntervalGradientEstimator(), enforceViolatedFixedNonlinear(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateBoundsTightenVar(), propagateConstraintSides(), provedBound(), reformNode2Var(), reformulate(), replaceViolatedByLinearConstraints(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), SCIPintervalSolveUnivariateQuadExpression(), SCIPlpGetModifiedProvedPseudoObjval(), and tightenBounds().
◆ SCIPintervalGetSup()
SCIP_EXPORT SCIP_Real SCIPintervalGetSup | ( | SCIP_INTERVAL | interval | ) |
returns supremum of interval
- Parameters
-
interval interval
Definition at line 360 of file intervalarith.c.
References SCIP_Interval::sup.
Referenced by addIntervalGradientEstimator(), enforceViolatedFixedNonlinear(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateBoundsTightenVar(), propagateConstraintSides(), reformNode2Var(), reformulate(), replaceViolatedByLinearConstraints(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), SCIPintervalSolveUnivariateQuadExpression(), and tightenBounds().
◆ SCIPintervalSet()
SCIP_EXPORT 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 368 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by checkFixedVariables(), consdataCreate(), exprgraphNodePropagateBounds(), exprgraphNodeUpdateBounds(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPexprgraphAddNode(), SCIPexprgraphReplaceVarByLinearSum(), SCIPexprtreeCheckCurvature(), SCIPintervalDiv(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarScalar(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalSetBounds()
SCIP_EXPORT 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 380 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by addIntervalGradientEstimator(), addUserEstimator(), checkCurvature(), exprgraphNodePropagateBounds(), getImpliedBounds(), nlrowCalcActivityBounds(), operator-(), presolveDual(), propagateBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateCons(), provedBound(), SCIP_DECL_EXPRCURV(), SCIP_DECL_EXPRGRAPHVARADDED(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), SCIPexprcurvPower(), SCIPintervalCos(), SCIPintervalPowerScalarInverse(), SCIPintervalQuadBivar(), SCIPintervalSin(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalSetEmpty()
SCIP_EXPORT void SCIPintervalSetEmpty | ( | SCIP_INTERVAL * | resultant | ) |
sets interval to empty interval, which will be [1.0, -1.0]
sets interval to empty interval, which will be [infinity, -infinity]
- Parameters
-
resultant resultant interval of operation
Definition at line 394 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by addBilinearTerm(), addQuadVarTerm(), catchQuadVarEvents(), consdataCreate(), delQuadVarTermPos(), mergeAndCleanLinearVars(), mergeAndCleanQuadVarTerms(), removeBilinearTermsPos(), replaceQuadVarTermPos(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_EXPRINTEVAL(), SCIPaddQuadVarLinearCoefQuadratic(), SCIPaddSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic(), SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPintervalLog(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarInverse(), SCIPintervalQuad(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIPintervalSquareRoot().
◆ SCIPintervalIsEmpty()
SCIP_EXPORT 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 405 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by computeBoundsX(), computeBoundsZ(), enforceViolatedFixedNonlinear(), exprgraphNodePropagateBounds(), exprgraphNodeUpdateBounds(), propagateBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateBoundsTightenVar(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), replaceViolatedByLinearConstraints(), SCIP_DECL_EXPRINTEVAL(), SCIPexprgraphCheckCurvature(), SCIPexprgraphGetNodePolynomialMonomialCurvature(), SCIPexprgraphPropagateVarBounds(), SCIPexprgraphTightenNodeBounds(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalAbs(), SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalCos(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalMax(), SCIPintervalMin(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPower(), SCIPintervalPowerScalar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalSign(), SCIPintervalSignPowerScalar(), SCIPintervalSin(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSquare(), SCIPintervalSquareRoot(), and SCIPintervalSub().
◆ SCIPintervalSetEntire()
SCIP_EXPORT 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 417 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, and SCIP_Interval::sup.
Referenced by computeBoundsX(), computeBoundsZ(), exprgraphCreateNode(), exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), SCIPexprEvalIntUser(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphEnableNode(), SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphReplaceVarByLinearSum(), SCIPintervalScalprod(), SCIPintervalScalprodScalarsInf(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalIsEntire()
SCIP_EXPORT 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 429 of file intervalarith.c.
References SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), nlrowCalcActivityBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsQuadVar(), and SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalIsPositiveInfinity()
SCIP_EXPORT 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 438 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsTightenVar().
◆ SCIPintervalIsNegativeInfinity()
SCIP_EXPORT 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 447 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsTightenVar().
◆ SCIPintervalIsSubsetEQ()
SCIP_EXPORT 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 456 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, MAX, MIN, SCIP_Interval::sup, and TRUE.
Referenced by propagateBoundsCons().
◆ SCIPintervalAreDisjoint()
SCIP_EXPORT 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 475 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsCons().
◆ SCIPintervalIntersect()
SCIP_EXPORT 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 484 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by exprgraphNodeUpdateBounds(), SCIPexprgraphTightenNodeBounds(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalPowerScalarInverse(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar().
◆ SCIPintervalUnify()
SCIP_EXPORT 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 497 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by SCIPintervalPowerScalarInverse(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalAddInf()
SCIP_EXPORT 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 524 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, and SCIPintervalGetRoundingMode().
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsInf().
◆ SCIPintervalAddSup()
SCIP_EXPORT 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 551 of file intervalarith.c.
References infinity, NULL, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), and SCIP_Interval::sup.
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalAdd()
SCIP_EXPORT 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 578 of file intervalarith.c.
References NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIPintervalSetRoundingMode().
Referenced by exprgraphNodePropagateBounds(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), operator+(), presolveTryAddLinearReform(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalQuadBivar(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalAddScalar()
SCIP_EXPORT 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 605 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBounds(), propagateBoundsQuadVar(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSubScalar().
◆ SCIPintervalAddVectors()
SCIP_EXPORT 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 655 of file intervalarith.c.
References SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), and SCIPintervalSetRoundingMode().
◆ SCIPintervalSub()
SCIP_EXPORT 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 685 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), lpUpdateVarColumnProved(), lpUpdateVarProved(), operator-(), propagateBounds(), propagateBoundsCons(), propagateBoundsQuadVar(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalSubScalar()
SCIP_EXPORT 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 733 of file intervalarith.c.
References SCIPintervalAddScalar().
Referenced by exprgraphNodePropagateBounds(), and propagateBounds().
◆ SCIPintervalMulInf()
SCIP_EXPORT 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 744 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MIN, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
◆ SCIPintervalMulSup()
SCIP_EXPORT 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 804 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarSup(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
◆ SCIPintervalMul()
SCIP_EXPORT 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 864 of file intervalarith.c.
References NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulInf(), SCIPintervalMulSup(), and SCIPintervalSetRoundingMode().
Referenced by exprgraphNodePropagateBounds(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), operator*(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalDiv(), SCIPintervalPower(), SCIPintervalQuad(), and SCIPlpGetModifiedProvedPseudoObjval().
◆ SCIPintervalMulScalarInf()
SCIP_EXPORT 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 891 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulInf(), SCIPintervalMulScalar(), and SCIPintervalScalprodScalarsInf().
◆ SCIPintervalMulScalarSup()
SCIP_EXPORT 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 947 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulScalar(), SCIPintervalMulSup(), and SCIPintervalScalprodScalarsSup().
◆ SCIPintervalMulScalar()
SCIP_EXPORT 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 1003 of file intervalarith.c.
References NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), and SCIPintervalSetRoundingMode().
Referenced by addIntervalGradientEstimator(), exprgraphNodePropagateBounds(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), replaceViolatedByLinearConstraints(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalDiv()
SCIP_EXPORT 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 1029 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), operator/(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalDivScalar()
SCIP_EXPORT 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 1083 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by presolveTryAddLinearReform(), propagateBounds(), and propagateBoundsCons().
◆ SCIPintervalScalprod()
SCIP_EXPORT 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 1186 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), SCIPintervalMulInf(), SCIPintervalMulSup(), SCIPintervalSetEntire(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
◆ SCIPintervalScalprodScalarsInf()
SCIP_EXPORT 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
computes 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 1228 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_ROUND_DOWNWARDS, SCIPintervalAddInf(), SCIPintervalGetRoundingMode(), SCIPintervalMulScalarInf(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
◆ SCIPintervalScalprodScalarsSup()
SCIP_EXPORT 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 1256 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_ROUND_UPWARDS, SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), SCIPintervalMulScalarSup(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
◆ SCIPintervalScalprodScalars()
SCIP_EXPORT 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 1282 of file intervalarith.c.
References SCIP_Interval::inf, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalScalprodScalarsInf(), SCIPintervalScalprodScalarsSup(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalSquare()
SCIP_EXPORT 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 1310 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), SCIP_Interval::sup, x, and y.
Referenced by exprgraphNodePropagateBounds(), propagateBounds(), SCIP_DECL_EXPRINTEVAL(), and square().
◆ SCIPintervalSquareRoot()
SCIP_EXPORT 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 1382 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPnextafter(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBounds(), SCIP_DECL_EXPRINTEVAL(), and sqrt().
◆ SCIPintervalPower()
SCIP_EXPORT 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 1443 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIPintervalExp(), SCIPintervalIsEmpty(), SCIPintervalLog(), SCIPintervalMul(), SCIPintervalPowerScalar(), and SCIP_Interval::sup.
Referenced by pow(), and SCIPintervalPowerScalarInverse().
◆ SCIPintervalPowerScalar()
SCIP_EXPORT 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
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 1766 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, pow(), SCIP_Bool, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), pow(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
◆ SCIPintervalPowerScalarScalar()
SCIP_EXPORT 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 need to have operand1 >= 0 or operand2 integer and need 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 1723 of file intervalarith.c.
References SCIP_Interval::inf, NULL, pow(), SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalSet(), SCIPnextafter(), and SCIP_Interval::sup.
◆ SCIPintervalPowerScalarIntegerInf()
SCIP_EXPORT SCIP_Real SCIPintervalPowerScalarIntegerInf | ( | SCIP_Real | operand1, |
int | operand2 | ||
) |
computes lower bound on power of a scalar operand1 to an integer operand2 both operands need to be finite numbers need 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 1476 of file intervalarith.c.
References SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalSetRoundingMode(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerSup().
◆ SCIPintervalPowerScalarIntegerSup()
SCIP_EXPORT SCIP_Real SCIPintervalPowerScalarIntegerSup | ( | SCIP_Real | operand1, |
int | operand2 | ||
) |
computes upper bound on power of a scalar operand1 to an integer operand2 both operands need to be finite numbers need 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 1558 of file intervalarith.c.
References SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalSetRoundingMode(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerInf().
◆ SCIPintervalPowerScalarInteger()
SCIP_EXPORT 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 need to have operand1 >= 0 and need 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 1632 of file intervalarith.c.
References SCIP_Interval::inf, negate(), SCIP_Real, SCIP_REAL_MAX, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalPowerScalarInteger(), SCIPintervalReciprocal(), SCIPintervalSet(), SCIPintervalSetRoundingMode(), SCIP_Interval::sup, and TRUE.
Referenced by SCIPintervalPowerScalarInteger().
◆ SCIPintervalPowerScalarInverse()
SCIP_EXPORT 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 p = exponent a given scalar and y = image a given interval, computes a subinterval x of basedomain such that y in x^p and such that for all z in basedomain less 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 2014 of file intervalarith.c.
References EPSISINT, SCIP_Interval::inf, MAX, MIN, NULL, SCIPintervalIntersect(), SCIPintervalPower(), SCIPintervalReciprocal(), SCIPintervalSetBounds(), SCIPintervalSetEmpty(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds().
◆ SCIPintervalSignPowerScalar()
SCIP_EXPORT 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 sign(x) * abs(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 2095 of file intervalarith.c.
References SCIP_Interval::inf, infinity, negate(), NULL, pow(), SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), SCIPnextafter(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), and signpow().
◆ SCIPintervalReciprocal()
SCIP_EXPORT 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 2267 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by SCIPintervalPowerScalarInteger(), and SCIPintervalPowerScalarInverse().
◆ SCIPintervalExp()
SCIP_EXPORT 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 2340 of file intervalarith.c.
References exp(), SCIP_Interval::inf, infinity, NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by exp(), exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
◆ SCIPintervalLog()
SCIP_EXPORT 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 2424 of file intervalarith.c.
References SCIP_Interval::inf, infinity, log(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPnextafter(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), log(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
◆ SCIPintervalMin()
SCIP_EXPORT 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 2492 of file intervalarith.c.
References SCIP_Interval::inf, MIN, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalMax()
SCIP_EXPORT 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 2508 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalAbs()
SCIP_EXPORT 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 2524 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by abs(), fabs(), and SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalSin()
SCIP_EXPORT void SCIPintervalSin | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores sine value of operand in resultant NOTE: the operations are not applied rounding-safe here
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2552 of file intervalarith.c.
References a, b, SCIP_Interval::inf, M_PI, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPintervalIsEmpty(), SCIPintervalSetBounds(), sin(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and sin().
◆ SCIPintervalCos()
SCIP_EXPORT void SCIPintervalCos | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores cosine value of operand in resultant NOTE: the operations are not applied rounding-safe here
- Parameters
-
infinity value for infinity resultant resultant interval of operation operand operand of operation
Definition at line 2638 of file intervalarith.c.
References a, b, cos(), SCIP_Interval::inf, M_PI, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPintervalIsEmpty(), SCIPintervalSetBounds(), and SCIP_Interval::sup.
Referenced by cos(), and SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalSign()
SCIP_EXPORT 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 2722 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and sign().
◆ SCIPintervalQuadUpperBound()
SCIP_EXPORT 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 2751 of file intervalarith.c.
References b, SCIP_Interval::inf, infinity, MAX, negate(), SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalQuadUpperBound(), SCIPintervalSetRoundingMode(), SCIP_Interval::sup, and x.
Referenced by propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalQuad()
SCIP_EXPORT 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 2846 of file intervalarith.c.
References SCIP_Interval::inf, SCIP_Real, SCIPintervalIsEmpty(), SCIPintervalMul(), SCIPintervalQuadUpperBound(), SCIPintervalSetEmpty(), and SCIP_Interval::sup.
Referenced by nlrowCalcActivityBounds(), propagateBoundsQuadVar(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalQuadBivar(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalSolveUnivariateQuadExpressionPositive()
SCIP_EXPORT 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 2881 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()
SCIP_EXPORT 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 2928 of file intervalarith.c.
References SCIP_Interval::inf, SCIP_Real, SCIPintervalSolveUnivariateQuadExpressionPositive(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
◆ SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar()
SCIP_EXPORT 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
Given 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 2964 of file intervalarith.c.
References b, SCIP_Interval::inf, infinity, MAX, negate(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIntersect(), SCIPintervalSetEmpty(), SCIPintervalSetRoundingMode(), SCIPnextafter(), sqrt(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveUnivariateQuadExpressionPositive().
◆ SCIPintervalSolveUnivariateQuadExpression()
SCIP_EXPORT 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 3168 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, SCIPdebugMessage, SCIPintervalDiv(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), SCIPintervalSolveUnivariateQuadExpressionNegative(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBoundsQuadVar(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
◆ SCIPintervalQuadBivar()
SCIP_EXPORT 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 ax, ay, axy, bx, and by and intervals for x and y, computes interval for \( ax x^2 + ay y^2 + axy x y + bx x + by y \) NOTE: 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 3231 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.
Referenced by SCIP_DECL_EXPRINTEVAL().
◆ SCIPintervalSolveBivariateQuadExpressionAllScalar()
SCIP_EXPORT 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 ax, ay, axy, bx and by, 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}} \} \) NOTE: 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 3490 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(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBoundsBilinearTerm(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().