Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

commonly used numerical methods

Modules

 Computations With Tolerances
 methods used by the majority of operations involving floating-point computations in SCIP
 

Macros

#define SCIPisFinite(x)   ((x) == (x))
 

Functions

SCIP_Real SCIPcalcMachineEpsilon (void)
 
SCIP_Real SCIPnextafter (SCIP_Real from, SCIP_Real to)
 
SCIP_Longint SCIPcalcGreComDiv (SCIP_Longint val1, SCIP_Longint val2)
 
SCIP_Longint SCIPcalcSmaComMul (SCIP_Longint val1, SCIP_Longint val2)
 
SCIP_Longint SCIPcalcBinomCoef (int n, int m)
 
SCIP_Bool SCIPrealToRational (SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
 
SCIP_RETCODE SCIPcalcIntegralScalar (SCIP_Real *vals, int nvals, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Real *intscalar, SCIP_Bool *success)
 
SCIP_Bool SCIPfindSimpleRational (SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
 
SCIP_Real SCIPselectSimpleValue (SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom)
 
SCIP_Real SCIPrelDiff (SCIP_Real val1, SCIP_Real val2)
 
SCIP_Real SCIPcomputeGap (SCIP_Real eps, SCIP_Real inf, SCIP_Real primalbound, SCIP_Real dualbound)
 

Macro Definition Documentation

◆ SCIPisFinite

Function Documentation

◆ SCIPcalcMachineEpsilon()

SCIP_Real SCIPcalcMachineEpsilon ( void  )

returns the machine epsilon: the smallest number eps > 0, for which 1.0 + eps > 1.0

Definition at line 8667 of file misc.c.

References eps, and SCIP_Real.

Referenced by SCIPrealHashCode().

◆ SCIPnextafter()

SCIP_Real SCIPnextafter ( SCIP_Real  from,
SCIP_Real  to 
)

returns the next representable value of from in the direction of to

Parameters
fromvalue from which the next representable value should be returned
todirection in which the next representable value should be returned

Definition at line 8933 of file misc.c.

Referenced by initSolve(), SCIPintervalExp(), SCIPintervalLog(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarScalar(), SCIPintervalSignPowerScalar(), SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar(), SCIPintervalSquareRoot(), and SCIPrealHashCode().

◆ SCIPcalcGreComDiv()

SCIP_Longint SCIPcalcGreComDiv ( SCIP_Longint  val1,
SCIP_Longint  val2 
)

calculates the greatest common divisor of the two given values

Parameters
val1first value of greatest common devisor calculation
val2second value of greatest common devisor calculation

Definition at line 8690 of file misc.c.

References x, and y.

Referenced by deleteRedundantVars(), normalizeCumulativeCondition(), presolveTryAddLinearReform(), SCIPcalcIntegralScalar(), SCIPcalcSmaComMul(), SCIPprobScaleObj(), SCIPrealHashCode(), SCIProwCalcIntegralScalar(), SCIPsolveKnapsackExactly(), simplifyInequalities(), and tryAggregateIntVars().

◆ SCIPcalcSmaComMul()

SCIP_Longint SCIPcalcSmaComMul ( SCIP_Longint  val1,
SCIP_Longint  val2 
)

calculates the smallest common multiple of the two given values

Parameters
val1first value of smallest common multiple calculation
val2second value of smallest common multiple calculation

Definition at line 8942 of file misc.c.

References SCIP_Longint, and SCIPcalcGreComDiv().

Referenced by SCIPrealHashCode(), and tryAggregateIntVars().

◆ SCIPcalcBinomCoef()

SCIP_Longint SCIPcalcBinomCoef ( int  n,
int  m 
)

calculates a binomial coefficient n over m, choose m elements out of n, maximal value will be 33 over 16 (because the n=33 is the last line in the Pascal's triangle where each entry fits in a 4 byte value), an error occurs due to big numbers or an negative value m (and m < n) and -1 will be returned

Parameters
nnumber of different elements
mnumber to choose out of the above

Definition at line 9772 of file misc.c.

References SCIP_Longint, SCIP_LONGINT_MAX, and SCIP_Real.

Referenced by SCIPrealHashCode().

◆ SCIPrealToRational()

SCIP_Bool SCIPrealToRational ( SCIP_Real  val,
SCIP_Real  mindelta,
SCIP_Real  maxdelta,
SCIP_Longint  maxdnom,
SCIP_Longint nominator,
SCIP_Longint denominator 
)

converts a real number into a (approximate) rational representation, and returns TRUE iff the conversion was successful

Parameters
valreal value r to convert into rational number
mindeltaminimal allowed difference r - q of real r and rational q = n/d
maxdeltamaximal allowed difference r - q of real r and rational q = n/d
maxdnommaximal denominator allowed
nominatorpointer to store the nominator n of the rational number
denominatorpointer to store the denominator d of the rational number

Definition at line 8963 of file misc.c.

References a, b, EPSFLOOR, EPSGT, FALSE, MIN, NULL, REALABS, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_Real, and TRUE.

Referenced by prettifyConss(), SCIPcalcIntegralScalar(), SCIPfindSimpleRational(), SCIPrealHashCode(), SCIProwCalcIntegralScalar(), and tryAggregateIntVars().

◆ SCIPcalcIntegralScalar()

SCIP_RETCODE SCIPcalcIntegralScalar ( SCIP_Real vals,
int  nvals,
SCIP_Real  mindelta,
SCIP_Real  maxdelta,
SCIP_Longint  maxdnom,
SCIP_Real  maxscale,
SCIP_Real intscalar,
SCIP_Bool success 
)

tries to find a value, such that all given values, if scaled with this value become integral in relative allowed difference in between mindelta and maxdelta

Parameters
valsvalues to scale
nvalsnumber of values to scale
mindeltaminimal relative allowed difference of scaled coefficient s*c and integral i
maxdeltamaximal relative allowed difference of scaled coefficient s*c and integral i
maxdnommaximal denominator allowed in rational numbers
maxscalemaximal allowed scalar
intscalarpointer to store scalar that would make the coefficients integral, or NULL
successstores whether returned value is valid

Definition at line 9123 of file misc.c.

References ABS, EPSEQ, FALSE, isIntegralScalar(), MIN, nscalars, NULL, REALABS, SCIP_Bool, SCIP_DEFAULT_EPSILON, SCIP_INVALID, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIPcalcGreComDiv(), SCIPdebugMessage, SCIPrealToRational(), and TRUE.

Referenced by buildFlowCover(), cutTightenCoefs(), cutTightenCoefsQuad(), SCIP_DECL_PRICERREDCOST(), SCIPcutGenerationHeuristicCMIR(), SCIPprobScaleObj(), SCIPrealHashCode(), SCIPseparateRelaxedKnapsack(), and transformNonIntegralRow().

◆ SCIPfindSimpleRational()

SCIP_Bool SCIPfindSimpleRational ( SCIP_Real  lb,
SCIP_Real  ub,
SCIP_Longint  maxdnom,
SCIP_Longint nominator,
SCIP_Longint denominator 
)

given a (usually very small) interval, tries to find a rational number with simple denominator (i.e. a small number, probably multiplied with powers of 10) out of this interval; returns TRUE iff a valid rational number inside the interval was found

Parameters
lblower bound of the interval
ubupper bound of the interval
maxdnommaximal denominator allowed for resulting rational number
nominatorpointer to store the nominator n of the rational number
denominatorpointer to store the denominator d of the rational number

Definition at line 9327 of file misc.c.

References SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalHasRoundingControl(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), and SCIPrealToRational().

Referenced by SCIPrealHashCode(), and SCIPselectSimpleValue().

◆ SCIPselectSimpleValue()

SCIP_Real SCIPselectSimpleValue ( SCIP_Real  lb,
SCIP_Real  ub,
SCIP_Longint  maxdnom 
)

given a (usually very small) interval, selects a value inside this interval; it is tried to select a rational number with simple denominator (i.e. a small number, probably multiplied with powers of 10); if no valid rational number inside the interval was found, selects the central value of the interval

Parameters
lblower bound of the interval
ubupper bound of the interval
maxdnommaximal denominator allowed for resulting rational number

Definition at line 9368 of file misc.c.

References getRand(), MAX, NULL, SCIP_Bool, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_RAND_MAX, SCIP_Real, SCIPdebugMessage, SCIPdebugPrintf, and SCIPfindSimpleRational().

Referenced by presolveTryAddLinearReform(), SCIP_DECL_PRESOLEXEC(), SCIPanalyzeDeductionsProbing(), and SCIPrealHashCode().

◆ SCIPrelDiff()

◆ SCIPcomputeGap()

SCIP_Real SCIPcomputeGap ( SCIP_Real  eps,
SCIP_Real  inf,
SCIP_Real  primalbound,
SCIP_Real  dualbound 
)

computes the gap from the primal and the dual bound

Parameters
epsthe value treated as zero
infthe value treated as infinity
primalboundthe primal bound
dualboundthe dual bound

Definition at line 10579 of file misc.c.

References EPSEQ, EPSZ, SCIP_Interval::inf, MIN, REALABS, and SCIP_Real.

Referenced by SCIPgetConcurrentGap(), SCIPgetGap(), SCIPgetTransGap(), and SCIPstoreSolutionGap().