Your free trial has ended.

Try the live demo or log in .

4d438cfb

By: ValentinHirschi <valentin.hirschi@gmail.com>

Use the contour box for real-mass three-mass boxes in every labelling

NinjaRS found D0(p² = 20602, 6775, 113296, -106553; s12 = 80235,
s23 = -4769; m² = 8315.178393760001, 100, 8315.178393760001, 0;
mu² = 8315.178393760001) depending on the order of its propagators: in
the 8 relabellings with these channels the real part was +1.714058e-8
instead of -9.718748e-9 (COLLIER -9.718748e-9 - 8.341413e-9 i), on every
route and precision except DoubleFloat in 4 of them, and in OneLOop 3.6
itself in double and quadruple precision. Those relabellings took
OneLOop's real-mass boxf33 chart, which OneLOop uses outside timelike
configurations; the others took its contour box (boxc) at the
vanishing-width limit.

In a sweep of 400 random real-mass boxes in all 24 relabellings, scored
against OneLOop 3.6's own complex-mass route in quadruple precision
extrapolated to vanishing widths, boxf33 was wrong in some relabellings
of 39 of 154 three-mass boxes and the contour box in none. Three-mass
finite boxes now use the contour representation wherever it supports the
kinematics (`finite_three_mass_representation`, hand-written
`boxes::d0`). Correcting boxf33's root lips to p + i eps instead of
p(1 + i eps) fixed only 9 of the 39.

The contour box lost 8 to 10 digits in binary64 at a pseudo-threshold
next to a massless line (an external invariant equal to its massive
neighbour's mass), where an edge quadratic of `s3` has an analytic double
root that rounded coefficients turn into a rounding-sized discriminant.
`s3` now takes its double-root forms when the discriminant leaves
1024 |b|² unchanged at the working precision (expression and hand-written
kernel): exactly and nearly on-shell inputs keep 14 to 15 digits instead
of 8, invariants 3e-8 to 5e-7 (relative) from such a threshold keep 6.5
instead of 8, and 128 bits and more decide exactly as before.

Four-mass boxes keep OneLOop's selection: its boxf4 chart was wrong in
12 of the 1432 relabellings that took it (8 of 88 boxes), but the contour
box costs 1.5 to 4 times as much on the recorded NinjaRS streams, whose
174 distinct real-mass boxes are right in all 24 relabellings.

Tests: tests/d0_real_mass_orderings.rs checks the NinjaRS box and 12
sweep boxes in all 24 relabellings on every binary64 route, DoubleFloat,
and native code and interpreted expressions at 128 bits (all images
agree to 1e-30). tests/data/permutation_regressions.txt: lines 471-474
and 585-588 stored OneLOop's wrong boxf33 imaginary parts (-26.894,
-0.15379) and now hold the contour values at 256 bits (+27.690,
+0.058428); lines 471-474 keep nine digits in binary64 at their exact
pseudo-threshold (5.8e-10 to 7.8e-10, allowed up to 2e-9). Native code
regenerated, D0 SymJIT asset rebuilt.

Oracle sweeps (D0, four seeds, native, generated and expression routes):
every row flagged against OneLOop was checked; they are OneLOop's wrong
real-mass values (fixed here: one value in all 24 relabellings, equal to
OneLOop's own vanishing-width limit), binary64 at exact pseudo-thresholds
next to a massless line (2e-10 to 8e-10), or rows where OneLOop's double
and quadruple precision disagree. Retired instructions per call on the
recorded NinjaRS streams: D0 +0.08% (max +0.18%), C0 unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>