interval arithmetics for provable bounds
Definition in file intervalarith.c.
#include <stdlib.h>
#include <assert.h>
#include <math.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.
Macros | |
#define | SCIP_ROUND_DOWNWARDS 0 |
#define | SCIP_ROUND_UPWARDS 1 |
#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)) |
#define SCIP_ROUND_DOWNWARDS 0 |
round always down
Definition at line 177 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 178 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 |
round always to nearest
Definition at line 179 of file intervalarith.c.
Referenced by SCIPintervalExp(), SCIPintervalGetRoundingMode(), SCIPintervalLog(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarScalar(), SCIPintervalSetRoundingModeToNearest(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIPintervalSquareRoot().
#define SCIP_ROUND_ZERO 3 |
round always towards zero
Definition at line 180 of file intervalarith.c.
Referenced by SCIPintervalSetRoundingModeTowardsZero().
#define CALCB | ( | y | ) | ((bx + axy * (y)) / (2.0 * sqrtax)) |
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar().
#define CALCR | ( | c, | |
y | |||
) | (rcoef_const + (c) + (rcoef_y + rcoef_yy * (y)) * (y)) |
Referenced by SCIPintervalSolveBivariateQuadExpressionAllScalar().
SCIP_Bool SCIPintervalHasRoundingControl | ( | void | ) |
returns whether rounding mode control is available
Definition at line 183 of file intervalarith.c.
References FALSE.
Referenced by SCIPfindSimpleRational().
void SCIPintervalSetRoundingMode | ( | SCIP_ROUNDMODE | roundmode | ) |
sets rounding mode of floating point operations
roundmode | rounding mode to activate |
Definition at line 191 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().
SCIP_ROUNDMODE SCIPintervalGetRoundingMode | ( | void | ) |
gets current rounding mode of floating point operations
Definition at line 199 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().
gets the negation of a double
Fallback implementation that calls the negation method from misc.o. Having the implementation in a different object file will hopefully prevent it from being "optimized away".
x | number that should be negated |
Definition at line 269 of file intervalarith.c.
References SCIPnegateReal().
Referenced by SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalPowerScalarInteger(), SCIPintervalQuadUpperBound(), SCIPintervalSignPowerScalar(), and SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar().
void SCIPintervalSetRoundingModeDownwards | ( | void | ) |
sets rounding mode of floating point operations to downwards rounding
Definition at line 403 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 | ) |
sets rounding mode of floating point operations to upwards rounding
Definition at line 411 of file intervalarith.c.
References SCIP_ROUND_UPWARDS, and SCIPintervalSetRoundingMode().
Referenced by consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), propagateBounds(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), and propagateBoundsQuadVar().
void SCIPintervalSetRoundingModeToNearest | ( | void | ) |
sets rounding mode of floating point operations to nearest rounding
Definition at line 419 of file intervalarith.c.
References SCIP_ROUND_NEAREST, and SCIPintervalSetRoundingMode().
void SCIPintervalSetRoundingModeTowardsZero | ( | void | ) |
sets rounding mode of floating point operations to towards zero rounding
Definition at line 427 of file intervalarith.c.
References SCIP_ROUND_ZERO, and SCIPintervalSetRoundingMode().
negates a number in a way that the compiler does not optimize it away
x | number to negate |
Definition at line 435 of file intervalarith.c.
References negate().
Referenced by consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), exprgraphNodePropagateBounds(), propagateBoundsCons(), and propagateConstraintSides().
SCIP_Real SCIPintervalGetInf | ( | SCIP_INTERVAL | interval | ) |
returns infimum of interval
interval | interval |
Definition at line 464 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().
SCIP_Real SCIPintervalGetSup | ( | SCIP_INTERVAL | interval | ) |
returns supremum of interval
interval | interval |
Definition at line 472 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().
void SCIPintervalSet | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | value | ||
) |
stores given value as interval
resultant | interval to store value into |
value | value to store |
Definition at line 480 of file intervalarith.c.
References SCIP_Interval::inf, NULL, and SCIP_Interval::sup.
Referenced by checkFixedVariables(), consdataCreate(), exprgraphNodePropagateBounds(), exprgraphNodeUpdateBounds(), lpUpdateVarColumnProved(), lpUpdateVarLooseProved(), lpUpdateVarProved(), nlrowCalcActivityBounds(), presolveTryAddLinearReform(), propagateBoundsCons(), propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), provedBound(), SCIP_DECL_EXPRINTEVAL(), SCIPexprgraphAddNode(), SCIPexprgraphReplaceVarByLinearSum(), SCIPintervalDiv(), SCIPintervalPowerScalarInteger(), SCIPintervalPowerScalarScalar(), SCIPintervalQuadBivar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPlpGetModifiedProvedPseudoObjval().
void SCIPintervalSetBounds | ( | SCIP_INTERVAL * | resultant, |
SCIP_Real | inf, | ||
SCIP_Real | sup | ||
) |
stores given infimum and supremum as interval
resultant | interval to store value into |
inf | value to store as infimum |
sup | value to store as supremum |
Definition at line 492 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(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), SCIPexprcurvPower(), SCIPintervalCos(), SCIPintervalPowerScalarInverse(), SCIPintervalQuadBivar(), SCIPintervalSin(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
void SCIPintervalSetEmpty | ( | SCIP_INTERVAL * | resultant | ) |
sets interval to empty interval, which will be [infinity, -infinity]
resultant | resultant interval of operation |
Definition at line 506 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().
SCIP_Bool SCIPintervalIsEmpty | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is empty, i.e., whether inf > sup
infinity | value for infinity |
operand | operand of operation |
Definition at line 517 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(), SCIPintervalCos(), SCIPintervalDiv(), SCIPintervalDivScalar(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalMax(), SCIPintervalMin(), SCIPintervalMul(), SCIPintervalMulInf(), SCIPintervalMulScalar(), SCIPintervalMulScalarInf(), SCIPintervalMulScalarSup(), SCIPintervalMulSup(), SCIPintervalPower(), SCIPintervalPowerScalar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), SCIPintervalReciprocal(), SCIPintervalSign(), SCIPintervalSignPowerScalar(), SCIPintervalSin(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSquare(), SCIPintervalSquareRoot(), and SCIPintervalSub().
void SCIPintervalSetEntire | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant | ||
) |
sets interval to entire [-infinity, +infinity]
infinity | value for infinity |
resultant | resultant interval of operation |
Definition at line 529 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(), SCIPintervalScalprodScalarsSup(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
SCIP_Bool SCIPintervalIsEntire | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is entire, i.e., whether inf <= -infinity and sup >= infinity
infinity | value for infinity |
operand | operand of operation |
Definition at line 541 of file intervalarith.c.
References SCIP_Interval::inf, infinity, and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), nlrowCalcActivityBounds(), propagateBoundsBilinearTerm(), propagateBoundsCons(), propagateBoundsQuadVar(), and SCIP_DECL_EXPRINTEVAL().
SCIP_Bool SCIPintervalIsPositiveInfinity | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is positive infinity, i.e., [infinity, infinity]
infinity | value for infinity |
operand | operand of operation |
Definition at line 550 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsTightenVar().
SCIP_Bool SCIPintervalIsNegativeInfinity | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand | ||
) |
indicates whether interval is negative infinity, i.e., [-infinity, -infinity]
infinity | value for infinity |
operand | operand of operation |
Definition at line 559 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsTightenVar().
SCIP_Bool SCIPintervalIsSubsetEQ | ( | SCIP_Real | infinity, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
indicates whether operand1 is contained in operand2
infinity | value for infinity |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 568 of file intervalarith.c.
References FALSE, SCIP_Interval::inf, MAX, MIN, SCIP_Interval::sup, and TRUE.
Referenced by propagateBoundsCons().
SCIP_Bool SCIPintervalAreDisjoint | ( | SCIP_INTERVAL | operand1, |
SCIP_INTERVAL | operand2 | ||
) |
indicates whether operand1 and operand2 are disjoint
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 587 of file intervalarith.c.
References SCIP_Interval::inf, and SCIP_Interval::sup.
Referenced by propagateBoundsCons().
void SCIPintervalIntersect | ( | SCIP_INTERVAL * | resultant, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
intersection of two intervals
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 596 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by exprgraphNodeUpdateBounds(), SCIPexprgraphTightenNodeBounds(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalPowerScalarInverse(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpressionPositive().
void SCIPintervalUnify | ( | SCIP_INTERVAL * | resultant, |
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
interval enclosure of the union of two intervals
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 609 of file intervalarith.c.
References SCIP_Interval::inf, MAX, MIN, NULL, and SCIP_Interval::sup.
Referenced by SCIPintervalPowerScalarInverse(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 636 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, and SCIPintervalGetRoundingMode().
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsInf().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 663 of file intervalarith.c.
References infinity, NULL, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), and SCIP_Interval::sup.
Referenced by SCIPintervalAdd(), SCIPintervalAddVectors(), SCIPintervalScalprod(), and SCIPintervalScalprodScalarsSup().
void SCIPintervalAdd | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
adds operand1 and operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 690 of file intervalarith.c.
References 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().
void SCIPintervalAddScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
adds operand1 and scalar operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 717 of file intervalarith.c.
References SCIP_Interval::inf, infinity, 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().
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
infinity | value for infinity |
resultant | array of resultant intervals of operation |
length | length of arrays |
operand1 | array of first operands of operation |
operand2 | array of second operands of operation |
Definition at line 767 of file intervalarith.c.
References SCIP_ROUND_DOWNWARDS, SCIP_ROUND_UPWARDS, SCIPintervalAddInf(), SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), and SCIPintervalSetRoundingMode().
void SCIPintervalSub | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
subtracts operand2 from operand1 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 797 of file intervalarith.c.
References SCIP_Interval::inf, infinity, 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().
void SCIPintervalSubScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
subtracts scalar operand2 from operand1 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 845 of file intervalarith.c.
References SCIPintervalAddScalar().
Referenced by exprgraphNodePropagateBounds(), and propagateBounds().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation; can be +/-inf |
operand2 | second operand of operation; can be +/-inf |
Definition at line 856 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MIN, NULL, SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarInf(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation; can be +/-inf |
operand2 | second operand of operation; can be +/-inf |
Definition at line 916 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, NULL, SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalMulScalarSup(), and SCIP_Interval::sup.
Referenced by propagateBoundsCons(), SCIPintervalMul(), and SCIPintervalScalprod().
void SCIPintervalMul | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
multiplies operand1 with operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation; can be +/-inf |
operand2 | second operand of operation; can be +/-inf |
Definition at line 976 of file intervalarith.c.
References 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().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation; can be +/- inf |
Definition at line 1003 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulInf(), SCIPintervalMulScalar(), and SCIPintervalScalprodScalarsInf().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation; can be +/- inf |
Definition at line 1059 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIPintervalMulScalar(), SCIPintervalMulSup(), and SCIPintervalScalprodScalarsSup().
void SCIPintervalMulScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
multiplies operand1 with scalar operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1115 of file intervalarith.c.
References 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().
void SCIPintervalDiv | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
divides operand1 by operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1141 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().
void SCIPintervalDivScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_Real | operand2 | ||
) |
divides operand1 by scalar operand2 and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1195 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().
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
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 1298 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.
void SCIPintervalScalprodScalarsInf | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_Real * | operand2 | ||
) |
computes scalar product of a vector of intervals and a vector of scalars and stores infimum of result in infimum of resultant
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 1340 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_ROUND_DOWNWARDS, SCIPintervalAddInf(), SCIPintervalGetRoundingMode(), SCIPintervalMulScalarInf(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
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
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 1368 of file intervalarith.c.
References SCIP_Interval::inf, infinity, SCIP_ROUND_UPWARDS, SCIPintervalAddSup(), SCIPintervalGetRoundingMode(), SCIPintervalMulScalarSup(), SCIPintervalSetEntire(), and SCIP_Interval::sup.
Referenced by SCIPintervalScalprodScalars().
void SCIPintervalScalprodScalars | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
int | length, | ||
SCIP_INTERVAL * | operand1, | ||
SCIP_Real * | operand2 | ||
) |
computes the scalar product of a vector of intervals and a vector of scalars and stores result in resultant
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 1394 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().
void SCIPintervalSquare | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
squares operand and stores result in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 1422 of file intervalarith.c.
References SCIP_Interval::inf, infinity, 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().
void SCIPintervalSquareRoot | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores (positive part of) square root of operand in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 1494 of file intervalarith.c.
References SCIP_Interval::inf, infinity, 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().
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))
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1555 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIPintervalExp(), SCIPintervalIsEmpty(), SCIPintervalLog(), SCIPintervalMul(), SCIPintervalPowerScalar(), and SCIP_Interval::sup.
Referenced by pow(), and SCIPintervalPowerScalarInverse().
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
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1588 of file intervalarith.c.
References SCIP_Real, SCIP_ROUND_DOWNWARDS, SCIPintervalGetRoundingMode(), SCIPintervalPowerScalarIntegerSup(), SCIPintervalSetRoundingMode(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerSup().
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
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1670 of file intervalarith.c.
References SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalPowerScalarIntegerInf(), SCIPintervalSetRoundingMode(), and TRUE.
Referenced by SCIPintervalPowerScalar(), and SCIPintervalPowerScalarIntegerInf().
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
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1744 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().
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
resultant | resultant of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1835 of file intervalarith.c.
References SCIP_Interval::inf, NULL, pow(), SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_ROUND_NEAREST, SCIPintervalGetRoundingMode(), SCIPintervalSet(), and SCIP_Interval::sup.
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 1878 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(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), pow(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
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
infinity | value for infinity |
resultant | resultant interval of operation |
basedomain | domain of base |
exponent | exponent |
image | interval image of power |
Definition at line 2126 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().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 2207 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(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), SCIP_DECL_EXPRINTEVAL(), and signpow().
void SCIPintervalReciprocal | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
computes the reciprocal of an interval
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2379 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().
void SCIPintervalExp | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores exponential of operand in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2452 of file intervalarith.c.
References exp(), SCIP_Interval::inf, infinity, 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().
void SCIPintervalLog | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores natural logarithm of operand in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2532 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(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), log(), SCIP_DECL_EXPRINTEVAL(), and SCIPintervalPower().
void SCIPintervalMin | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
stores minimum of operands in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 2600 of file intervalarith.c.
References SCIP_Interval::inf, MIN, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
void SCIPintervalMax | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand1, | ||
SCIP_INTERVAL | operand2 | ||
) |
stores maximum of operands in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand1 | first operand of operation |
operand2 | second operand of operation |
Definition at line 2616 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
void SCIPintervalAbs | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores absolute value of operand in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2632 of file intervalarith.c.
References SCIP_Interval::inf, MAX, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by abs(), and SCIP_DECL_EXPRINTEVAL().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2660 of file intervalarith.c.
References 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().
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
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2746 of file intervalarith.c.
References 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().
void SCIPintervalSign | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | operand | ||
) |
stores sign of operand in resultant
infinity | value for infinity |
resultant | resultant interval of operation |
operand | operand of operation |
Definition at line 2830 of file intervalarith.c.
References SCIP_Interval::inf, NULL, SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL(), and sign().
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)
infinity | value for infinity |
a | coefficient of x^2 |
b_ | coefficient of x |
x | range of x |
Definition at line 2859 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, negate(), SCIP_Real, SCIP_ROUND_UPWARDS, SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalQuadUpperBound(), SCIPintervalSetRoundingMode(), and SCIP_Interval::sup.
Referenced by propagateBoundsGetQuadActivity(), propagateBoundsQuadVar(), SCIPintervalQuad(), SCIPintervalQuadUpperBound(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().
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 \)
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 2954 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().
void SCIPintervalSolveUnivariateQuadExpressionPositive | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | rhs | ||
) |
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\).
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 2989 of file intervalarith.c.
References SCIP_Interval::inf, infinity, NULL, SCIPdebugMessage, SCIPdebugPrintf, SCIPintervalIntersect(), SCIPintervalSetEmpty(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), and SCIP_Interval::sup.
Referenced by propagateBoundsQuadVar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), and SCIPintervalSolveUnivariateQuadExpression().
void SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_Real | sqrcoeff, | ||
SCIP_Real | lincoeff, | ||
SCIP_Real | rhs | ||
) |
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\). Implements Algorithm 3.2 from Domes and Neumaier: Constraint propagation on quadratic constraints (2008).
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 3035 of file intervalarith.c.
References SCIP_Interval::inf, infinity, 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().
void SCIPintervalSolveUnivariateQuadExpression | ( | SCIP_Real | infinity, |
SCIP_INTERVAL * | resultant, | ||
SCIP_INTERVAL | sqrcoeff, | ||
SCIP_INTERVAL | lincoeff, | ||
SCIP_INTERVAL | rhs | ||
) |
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\)
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 3136 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().
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
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 3198 of file intervalarith.c.
References SCIP_Interval::inf, infinity, MAX, MIN, NULL, REALABS, SCIP_Real, SCIPdebugMessage, SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalQuad(), SCIPintervalSet(), SCIPintervalSetBounds(), and SCIP_Interval::sup.
Referenced by SCIP_DECL_EXPRINTEVAL().
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
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 3457 of file intervalarith.c.
References 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(), SCIPintervalSetEntire(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpressionPositive(), SCIPintervalSub(), SCIPintervalUnify(), sqrt(), and SCIP_Interval::sup.
Referenced by exprgraphNodePropagateBounds(), propagateBoundsBilinearTerm(), and SCIPintervalSolveBivariateQuadExpressionAllScalar().