|
interval arithmetics for provable bounds
- Author
- Tobias Achterberg
-
Stefan Vigerske
-
Kati Wolter
Definition in file intervalarith.c.
#include <stdlib.h>
#include <assert.h>
#include "scip/def.h"
#include "scip/intervalarith.h"
#include "scip/pub_message.h"
#include "scip/misc.h"
Go to the source code of this file.
|
SCIP_Bool | SCIPintervalHasRoundingControl (void) |
|
void | SCIPintervalSetRoundingMode (SCIP_ROUNDMODE roundmode) |
|
SCIP_ROUNDMODE | SCIPintervalGetRoundingMode (void) |
|
static SCIP_Real | negate (SCIP_Real x) |
|
void | SCIPintervalSetRoundingModeDownwards (void) |
|
void | SCIPintervalSetRoundingModeUpwards (void) |
|
void | SCIPintervalSetRoundingModeToNearest (void) |
|
void | SCIPintervalSetRoundingModeTowardsZero (void) |
|
SCIP_Real | SCIPintervalNegateReal (SCIP_Real x) |
|
SCIP_Real | SCIPintervalGetInf (SCIP_INTERVAL interval) |
|
SCIP_Real | SCIPintervalGetSup (SCIP_INTERVAL interval) |
|
void | SCIPintervalSet (SCIP_INTERVAL *resultant, SCIP_Real value) |
|
void | SCIPintervalSetBounds (SCIP_INTERVAL *resultant, SCIP_Real inf, SCIP_Real sup) |
|
void | SCIPintervalSetEmpty (SCIP_INTERVAL *resultant) |
|
SCIP_Bool | SCIPintervalIsEmpty (SCIP_Real infinity, SCIP_INTERVAL operand) |
|
void | SCIPintervalSetEntire (SCIP_Real infinity, SCIP_INTERVAL *resultant) |
|
SCIP_Bool | SCIPintervalIsEntire (SCIP_Real infinity, SCIP_INTERVAL operand) |
|
SCIP_Bool | SCIPintervalIsPositiveInfinity (SCIP_Real infinity, SCIP_INTERVAL operand) |
|
SCIP_Bool | SCIPintervalIsNegativeInfinity (SCIP_Real infinity, SCIP_INTERVAL operand) |
|
SCIP_Bool | SCIPintervalIsSubsetEQ (SCIP_Real infinity, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
SCIP_Bool | SCIPintervalAreDisjoint (SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalIntersect (SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalUnify (SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalAddInf (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalAddSup (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalAdd (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalAddScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalAddVectors (SCIP_Real infinity, SCIP_INTERVAL *resultant, int length, SCIP_INTERVAL *operand1, SCIP_INTERVAL *operand2) |
|
void | SCIPintervalSub (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalSubScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalMulInf (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalMulSup (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalMul (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalMulScalarInf (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalMulScalarSup (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalMulScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalDiv (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalDivScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalScalprod (SCIP_Real infinity, SCIP_INTERVAL *resultant, int length, SCIP_INTERVAL *operand1, SCIP_INTERVAL *operand2) |
|
void | SCIPintervalScalprodScalarsInf (SCIP_Real infinity, SCIP_INTERVAL *resultant, int length, SCIP_INTERVAL *operand1, SCIP_Real *operand2) |
|
void | SCIPintervalScalprodScalarsSup (SCIP_Real infinity, SCIP_INTERVAL *resultant, int length, SCIP_INTERVAL *operand1, SCIP_Real *operand2) |
|
void | SCIPintervalScalprodScalars (SCIP_Real infinity, SCIP_INTERVAL *resultant, int length, SCIP_INTERVAL *operand1, SCIP_Real *operand2) |
|
void | SCIPintervalSquare (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalSquareRoot (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalPower (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
SCIP_Real | SCIPintervalPowerScalarIntegerInf (SCIP_Real operand1, int operand2) |
|
SCIP_Real | SCIPintervalPowerScalarIntegerSup (SCIP_Real operand1, int operand2) |
|
void | SCIPintervalPowerScalarInteger (SCIP_INTERVAL *resultant, SCIP_Real operand1, int operand2) |
|
void | SCIPintervalPowerScalarScalar (SCIP_INTERVAL *resultant, SCIP_Real operand1, SCIP_Real operand2) |
|
void | SCIPintervalPowerScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalPowerScalarInverse (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL basedomain, SCIP_Real exponent, SCIP_INTERVAL image) |
|
void | SCIPintervalSignPowerScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2) |
|
void | SCIPintervalReciprocal (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalExp (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalLog (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalMin (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalMax (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2) |
|
void | SCIPintervalAbs (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
void | SCIPintervalSign (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand) |
|
SCIP_Real | SCIPintervalQuadUpperBound (SCIP_Real infinity, SCIP_Real a, SCIP_INTERVAL b_, SCIP_INTERVAL x) |
|
void | SCIPintervalQuad (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_Real sqrcoeff, SCIP_INTERVAL lincoeff, SCIP_INTERVAL xrng) |
|
void | SCIPintervalSolveUnivariateQuadExpressionPositive (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL sqrcoeff, SCIP_INTERVAL lincoeff, SCIP_INTERVAL rhs) |
|
void | SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_Real sqrcoeff, SCIP_Real lincoeff, SCIP_Real rhs) |
|
void | SCIPintervalSolveUnivariateQuadExpression (SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL sqrcoeff, SCIP_INTERVAL lincoeff, SCIP_INTERVAL rhs) |
|
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) |
|
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) |
|
#define SCIP_ROUND_DOWNWARDS 0 |
round always down
Definition at line 174 of file intervalarith.c.
Referenced by SCIPintervalAdd(), SCIPintervalAddInf(), SCIPintervalAddScalar(), SCIPintervalAddVectors(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalReciprocal(), SCIPintervalScalprod(), SCIPintervalScalprodScalars(), SCIPintervalScalprodScalarsInf(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), SCIPintervalSquare(), and SCIPintervalSub().
#define SCIP_ROUND_UPWARDS 1 |
round always up
Definition at line 175 of file intervalarith.c.
Referenced by SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalAddSup(), SCIPintervalAddVectors(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalMul(), SCIPintervalMulScalar(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalScalprod(), SCIPintervalScalprodScalars(), SCIPintervalScalprodScalarsSup(), SCIPintervalSetRoundingModeUpwards(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), SCIPintervalSquare(), and SCIPintervalSub().
#define SCIP_ROUND_NEAREST 2 |
#define SCIP_ROUND_ZERO 3 |
#define CALCB |
( |
|
y | ) |
((bx + axy * (y)) / (2.0 * sqrtax)) |
#define CALCR |
( |
|
c, |
|
|
|
y |
|
) |
| (rcoef_const + (c) + (rcoef_y + rcoef_yy * (y)) * (y)) |
SCIP_Bool SCIPintervalHasRoundingControl |
( |
void |
| ) |
|
sets rounding mode of floating point operations
- Parameters
-
roundmode | rounding mode to activate |
Definition at line 188 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().
gets current rounding mode of floating point operations
Definition at line 196 of file intervalarith.c.
References negate(), and SCIP_ROUND_NEAREST.
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().
void SCIPintervalSetRoundingModeDownwards |
( |
void |
| ) |
|
sets rounding mode of floating point operations to downwards rounding
Definition at line 390 of file intervalarith.c.
References SCIP_ROUND_DOWNWARDS, and SCIPintervalSetRoundingMode().
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateConstraintSides(), and SCIPfindSimpleRational().
void SCIPintervalSetRoundingModeUpwards |
( |
void |
| ) |
|
void SCIPintervalSetRoundingModeToNearest |
( |
void |
| ) |
|
void SCIPintervalSetRoundingModeTowardsZero |
( |
void |
| ) |
|
returns infimum of interval
- Parameters
-
Definition at line 451 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().
returns supremum of interval
- Parameters
-
Definition at line 459 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().
stores given value as interval
- Parameters
-
resultant | interval to store value into |
value | value to store |
Definition at line 467 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by checkFixedVariables(), consdataCreate(), exprgraphNodePropagateBounds(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPexprgraphAddNode(), SCIPexprgraphReplaceVarByLinearSum(), SCIPintervalDiv(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarScalar(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
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 479 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by addIntervalGradientEstimator(), addUserEstimator(), checkCurvature(), exprgraphNodePropagateBounds(), getImpliedBounds(), nlrowCalcActivityBounds(), operator-(), propagateBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), propagateCons(), provedBound(), SCIP_DECL_EXPRCURV(), SCIP_DECL_EXPRGRAPHVARADDED(), SCIP_DECL_EXPRINTEVAL(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), SCIPexprcurvPower(), SCIPintervalPowerScalarInverse(), SCIPintervalQuadBivar(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
sets interval to empty interval, which will be [infinity, -infinity]
- Parameters
-
resultant | resultant interval of operation |
Definition at line 493 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().
indicates whether interval is empty, i.e., whether inf > sup
- Parameters
-
infinity | value for infinity |
operand | operand of operation |
Definition at line 504 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(), SCIP_DECL_EXPRINTEVAL(), SCIPexprgraphCheckCurvature(), SCIPexprgraphGetNodePolynomialMonomialCurvature(), SCIPexprgraphPropagateVarBounds(), SCIPexprgraphTightenNodeBounds(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalAbs(), SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalMax(), SCIPintervalMin(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPower(), SCIPintervalPowerScalar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalSign(), SCIPintervalSignPowerScalar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSquare(), SCIPintervalSquareRoot(), and SCIPintervalSub().
sets interval to entire [-infinity, +infinity]
- Parameters
-
infinity | value for infinity |
resultant | resultant interval of operation |
Definition at line 516 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by computeBoundsX(), computeBoundsZ(), exprgraphCreateNode(), exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), SCIPexprEvalIntUser(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphEnableNode(), SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphReplaceVarByLinearSum(), SCIPintervalScalprod(), SCIPintervalScalprodScalarsInf(), SCIPintervalScalprodScalarsSup(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
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 677 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().
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 704 of file intervalarith.c.
References SCIP_Interval::inf, 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().
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 784 of file intervalarith.c.
References SCIP_Interval::inf, 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().
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 843 of file intervalarith.c.
References SCIP_Interval::inf, MIN, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
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 903 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarSup(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
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 963 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().
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 1102 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().
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 1128 of file intervalarith.c.
References SCIP_Interval::inf, 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().
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 1285 of file intervalarith.c.
References SCIP_Interval::inf, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), SCIPintervalMulInf(), SCIPintervalMulSup(), SCIPintervalSetEntire(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
squares operand and stores result in resultant
- Parameters
-
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 1409 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBounds(), SCIP_DECL_EXPRINTEVAL(), and square().
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 1481 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBounds(), SCIP_DECL_EXPRINTEVAL(), SCIPintervalSolveUnivariateQuadExpression(), and sqrt().
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 1731 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().
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 1865 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, pow(), SCIP_Bool, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalSetEmpty(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), pow(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
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 2113 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().
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 2194 of file intervalarith.c.
References SCIP_Interval::inf, negate(), NULL, pow(), SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetRoundingMode(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), and signpow().
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 2439 of file intervalarith.c.
References exp(), SCIP_Interval::inf, NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by exp(), exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
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 2519 of file intervalarith.c.
References SCIP_Interval::inf, log(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalSetEmpty(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), log(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
computes exact upper bound on 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 2680 of file intervalarith.c.
References SCIP_Interval::inf, MAX, negate(), SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalQuadUpperBound(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
stores range of quadratic term in resultant
given scalar a and intervals b and x, computes interval for
- 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 2775 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().
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 .
- 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 |
Definition at line 2810 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIPdebugMessage, SCIPdebugPrintf, SCIPintervalIntersect(), SCIPintervalSetEmpty(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIP_Interval::sup.
Referenced by propagateBoundsQuadVar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
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 . 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 |
Definition at line 2856 of file intervalarith.c.
References SCIP_Interval::inf, negate(), NULL, SCIP_Real, SCIP_REAL_MAX, SCIP_ROUND_DOWNWARDS, SCIP_ROUND_NEAREST, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalSetEmpty(), SCIPintervalSetRoundingMode(), sqrt(), and SCIP_Interval::sup.
Referenced by SCIPintervalSolveUnivariateQuadExpressionPositive().
solves a quadratic equation with interval coefficients
Given intervals a, b and c, this function computes an interval that contains all solutions of
- 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 |
Definition at line 2957 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIP_Real, SCIPdebugMessage, SCIPintervalDiv(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalSetEmpty(), SCIPintervalSetEntire(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSquareRoot(), SCIPintervalUnify(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), and propagateBoundsQuadVar().
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 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 3019 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPdebugMessage, SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalQuad(), SCIPintervalSet(), SCIPintervalSetBounds(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
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 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 3278 of file intervalarith.c.
References CALCB, CALCR, EPSGE, EPSGT, EPSLE, EPSLT, EPSN, EPSZ, SCIP_Interval::inf, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPintervalAddScalar(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalMulScalar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSetEmpty(), SCIPintervalSetEntire(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSub(), SCIPintervalUnify(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBoundsBilinearTerm(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
|