264a6ced

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

Separate the sheet windings of the contour residue r0

The contour box (boxc) residue term r0(y1, y2) sums log(q)/(1 - q) over
the quotients q = y2/y1 and (1 - y2)/(1 - y1) on their continued sheets.
When y1 and y2 nearly coincide on opposite lips of a cut, each quotient
carries a winding i pi n, and i pi n/(1 - q) is large and cancels against
the other terms of the contour formula; 1 - q formed from the rounded
quotient then costs digits. At the NinjaRS gg -> HHH D0 near a vanishing
Gram determinant (p^2 = 202500, 15625 x3, s = 93305.84790585532,
t = 62501.31001345166, m^2 = 29929 x4) binary64 was off by 6.8e-10
relative (OneLOop 3.6: 7.9e-15).

The windings are now taken out of both quotients (SheetAtom::split_winding,
for unreflected values) and their contribution is added once as
i pi (n0 - n1)/(y1 - y2), using the difference of the poles. The change
is applied in the expressions (and the inspection sheets) and in the
hand-written binary64 contour kernel; native D0 code and the D0 SymJIT
asset are regenerated.

The point is now 4.4e-12 (native, hand-written and generated), 1.4e-11
(interpreted expressions) and 9.2e-12 (SymJIT); 256-bit native and
expression values agree with OneLOop's quadruple precision to all printed
digits. The remainder belongs to the orientation the canonical
sorted-lambda relabelling picks: there poles of the linear s3 terms lie
within 1e-5 of their zeros, whereas most of the other 23 orientations
reach 1e-14 to 1e-13 (OneLOop's unpermuted one 3e-14).

OneLOop D0 sweeps (seeds 1-2, and 3 generic, 7000+ rows each), compared
with the previous build: native binary64 fixes 12 and 24 rows, the
generic sweep's largest stable error drops from 4.5e-9 to 5.0e-11, and
the expression route's from 1.2e-9 to 1.1e-10; no row regresses on either
route.

tests/d0_vanishing_gram.rs checks the point on every route (binary64
tolerance 5e-11, 256 bits 1e-15), and the row is appended to
tests/data/permutation_regressions.txt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub
Time to Start Worker time Duration Time to finish Idle
Config - - - - 8h09m55s
Eval - - - - -
Build - - - - -
Suite - - - - 8h09m55s