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_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) |
#define SCIPisFinite | ( | x | ) | ((x) == (x)) |
Definition at line 1607 of file pub_misc.h.
Referenced by addConcaveEstimatorBivariate(), addConcaveEstimatorMultivariate(), addConcaveEstimatorUnivariate(), addIntervalGradientEstimator(), addLinearization(), computeViolation(), evalFunctionGradient(), generate1ConvexIndefiniteUnderestimator(), generate1ConvexIndefiniteUnderestimatorAtBoundary(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateConvexConcaveEstimator(), generateConvexConcaveUnderestimator(), generateEstimatingHyperplane(), generateLinearizationCut(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateOverestimatingHyperplaneCut(), generateUnderestimatorParallelYFacets(), hessLagAddExprtree(), lifting(), readExpression(), readLinearCoefs(), readMultIncr(), SCIPexprgraphSimplify(), SCIPnlpiOracleEvalJacobian(), SCIPsolSetVal(), and solveDerivativeEquation().
SCIP_Real SCIPcalcMachineEpsilon | ( | void | ) |
returns the machine epsilon: the smallest number eps > 0, for which 1.0 + eps > 1.0
Definition at line 7922 of file misc.c.
References SCIP_Real.
Referenced by SCIPrealHashCode().
SCIP_Longint SCIPcalcGreComDiv | ( | SCIP_Longint | val1, |
SCIP_Longint | val2 | ||
) |
calculates the greatest common divisor of the two given values
val1 | first value of greatest common devisor calculation |
val2 | second value of greatest common devisor calculation |
Definition at line 7945 of file misc.c.
Referenced by deleteRedundantVars(), normalizeCumulativeCondition(), presolveTryAddLinearReform(), SCIPcalcIntegralScalar(), SCIPcalcSmaComMul(), SCIPprobScaleObj(), SCIPrealHashCode(), SCIProwCalcIntegralScalar(), SCIPsolveKnapsackExactly(), simplifyInequalities(), and tryAggregateIntVars().
SCIP_Longint SCIPcalcSmaComMul | ( | SCIP_Longint | val1, |
SCIP_Longint | val2 | ||
) |
calculates the smallest common multiple of the two given values
val1 | first value of smallest common multiple calculation |
val2 | second value of smallest common multiple calculation |
Definition at line 8056 of file misc.c.
References SCIP_Longint, and SCIPcalcGreComDiv().
Referenced by SCIPrealHashCode(), and tryAggregateIntVars().
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
n | number of different elements |
m | number to choose out of the above |
Definition at line 8887 of file misc.c.
References SCIP_Longint, SCIP_LONGINT_MAX, and SCIP_Real.
Referenced by SCIPrealHashCode().
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
val | real value r to convert into rational number |
mindelta | minimal allowed difference r - q of real r and rational q = n/d |
maxdelta | maximal allowed difference r - q of real r and rational q = n/d |
maxdnom | maximal denominator allowed |
nominator | pointer to store the nominator n of the rational number |
denominator | pointer to store the denominator d of the rational number |
Definition at line 8077 of file misc.c.
References EPSFLOOR, EPSGT, FALSE, MIN, NULL, REALABS, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_Real, and TRUE.
Referenced by prettifyConss(), SCIPcalcIntegralScalar(), SCIPfindSimpleRational(), SCIPrealHashCode(), SCIProwCalcIntegralScalar(), and tryAggregateIntVars().
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
vals | values to scale |
nvals | number of values to scale |
mindelta | minimal relative allowed difference of scaled coefficient s*c and integral i |
maxdelta | maximal relative allowed difference of scaled coefficient s*c and integral i |
maxdnom | maximal denominator allowed in rational numbers |
maxscale | maximal allowed scalar |
intscalar | pointer to store scalar that would make the coefficients integral, or NULL |
success | stores whether returned value is valid |
Definition at line 8237 of file misc.c.
References EPSEQ, FALSE, isIntegralScalar(), MIN, nscalars, NULL, REALABS, SCIP_Bool, SCIP_DEFAULT_EPSILON, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIPcalcGreComDiv(), SCIPdebugMessage, SCIPrealToRational(), and TRUE.
Referenced by getFlowCover(), SCIPprobScaleObj(), SCIPrealHashCode(), and SCIPseparateRelaxedKnapsack().
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
lb | lower bound of the interval |
ub | upper bound of the interval |
maxdnom | maximal denominator allowed for resulting rational number |
nominator | pointer to store the nominator n of the rational number |
denominator | pointer to store the denominator d of the rational number |
Definition at line 8441 of file misc.c.
References SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalHasRoundingControl(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), and SCIPrealToRational().
Referenced by SCIPrealHashCode(), and 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
lb | lower bound of the interval |
ub | upper bound of the interval |
maxdnom | maximal denominator allowed for resulting rational number |
Definition at line 8482 of file misc.c.
References getRand(), MAX, NULL, SCIP_Bool, SCIP_Longint, SCIP_RAND_MAX, SCIP_Real, SCIPdebugMessage, SCIPdebugPrintf, and SCIPfindSimpleRational().
Referenced by presolveTryAddLinearReform(), SCIP_DECL_PRESOLEXEC(), SCIPanalyzeDeductionsProbing(), and SCIPrealHashCode().
returns the relative difference: (val1-val2)/max(|val1|,|val2|,1.0)
val1 | first value to be compared |
val2 | second value to be compared |
Definition at line 9618 of file misc.c.
References REALABS, and SCIP_Real.
Referenced by getIntegralVal(), isIntegralScalar(), priceAndCutLoop(), SCIPbranchExecExtern(), SCIPbranchGetBranchingPoint(), SCIPconcsolverSync(), SCIPexprgraphSimplify(), SCIPexprtreeSimplify(), SCIPtreeBranchVar(), SCIPtreeBranchVarNary(), SCIPvalidateSolve(), and updateBestCandidate().
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
eps | the value treated as zero |
inf | the value treated as infinity |
primalbound | the primal bound |
dualbound | the dual bound |
Definition at line 9636 of file misc.c.
References EPSEQ, EPSZ, SCIP_Interval::inf, MIN, REALABS, and SCIP_Real.
Referenced by SCIPgetConcurrentGap(), and SCIPgetGap().