
Stability System and Parameters
OpenLoops offers a powerful and flexible system to asses the numerical stability
of oneloop amplitudes and to avoid potential instabilities at
exceptional phasespace points:

Double precision scaling test (DPscaling): OpenLoops can estimates the numerical stability
using a socalled scaling test: at a given phase space point oneloop matrix
elements are computed a second time by rescaling all dimensionful input
parameters by a factor ξ. The degree of stability is quantified by checking that the amplitude
fullfils the scaling behaviour M(ξ)=ξ^{d}M(1) expected from its mass dimension d.
For the scaling test several options are available:

Either the full matrixelement is calculated a second time (scaling_mode=2) or only the reduction to scalar integrals (scaling_mode=1).

Oneloop matrix elements are classified as unstable if their estimated error exceeds a certain threshold
(stability_unstable). For deviation_mode=1 this threshold is set by normalising the estimated error of the the oneloop amplitude to the corresponding Born amplitude, and for deviation_mode=1 by normalising to the oneloop amplitude itself.

Quadruple precision rescue system (QPrescue): matrix elements which turn out to be unstable under the
first scaling test can either be discarded (the value zero is returned for the matrix element) if their estimated error exceeds a certain threshold (stability_kill for loop amplitudes and stability_kill2 for loopsquared amplitudes) or recalculated using higher (quadruple) numerical precision as a rescue system, possibly obtained with a different library (redlib_qp). Also the stability_kill threshold is interpreted as described in (iii) depending on the deviation_mode switcher, while stability_kill2 is always referred to the relative error of the loopsquared amplitude.

Quadruple precision scaling test (QPscaling): at the level of the higher precision rescue system a
new scaling test can be performed. Phasespace points which again turn out to be unstable, i.e., if their estimated error exceeds a certain threshold (stability_kill for loop amplitudes and stability_kill2 for loopsquared amplitudes), are then discarded (by setting the matrix element to zero).
Alternatively, if different independent reduction libraries are linked with
OpenLoops instead of a scaling test the result of the two alternative
libraries can be compared. For differing results again a reevaluation with
higher numerical precision and possibly a scaling at this higher precision
can be performed.
OpenLoops automatically logs the stability of all evaluated phasespace points.
Resuts are written to disk either at the end of a run (by calling the finish() routine),
adaptive with a logarithmically increasing number of evaluated phasespace
points, or for every phasespace point.
The relative deviation between the scaled and the unscaled result can be returned and
used as an estimate of the numerical accuracy for each phasespace point.
Parameters
Parameter 
Decription 
Options 
redlib1 
primary reduction library 
1: CollierCOLI
5: CutTools (default)
7: CollierDD

redlib2 
secondary reduction library 
1: CollierCOLI
5: CutTools (default, not used)
7: CollierDD

redlib_qp 
quadprecision reduction library 
5: CutTools (default)





stability_mode 
select stability mode 
11: only DP: no scaling, no rescue
12: DPscaling, no rescue
13: DPscaling and QPrescue, no QP scaling
14: DPscaling, QPrescue and QPscaling (default)
21: DP with primary library and possible DP reevaluation with secondary library (redlib2)
22: same as 21 and QPrescue with quadprecision library (redlib_qp)
23: same as 22 and QPscaling
31: only QP: no scaling
32: QP and QPscaling





scaling_mode 
select what should be reevaluated for the scaling test 
1: only reduction (default)
2: everything

deviation_mode 
select deviation mode for scaling test 
1: based on Kfactor (default)
2: based on relative deviation

stability_triggerratio 
target efficiency of Kfactor based stability trigger (should not be << 0.1) 
double (default=0.2)

stability_unstable 
threshold above which a point is considered "unstable" 
double (default=0.01)

stability_kill 
threshold above which an unstable point is discarded 
double (default=1.)

stability_kill2 
threshold obove which an unstable point is discarded in loop induced amplitudes 
double (default=10.)

stability_log 
select when stability logs should be written 
0: never (default)
1: on finish() call
2: adaptive
3: always

stability_logdir 
set the (relative) path for the stability log files 
string (default="stability_log")

