By: ValentinHirschi <valentin.hirschi@gmail.com>
Fix continuation and degenerate-kinematics defects of the masters A sweep of A0/B0/dB0/C0/D0 over all propagator relabelings against OneLOop 3.6 in double and quadruple precision (tests/oracle_sweep.py, tests/support/sweep_oracle.f90, examples/oracle_sweep.rs) found the defects below. All are fixed in the exact expressions, so every route (Expression interpreter, SymJIT, native generated code, Float and Dual evaluation, master hooks) carries them; the native code and the SymJIT assets are regenerated and the hand-written binary64 kernels are re-transcribed from the fixed expressions. Bubbles (two_point.rs): - B0/dB0 with one massless line returned NaN: the two-mass roots at m1 = 0 round to 1 - ulp and log(1 - 1/x) becomes log(0). B0 uses the one-mass formula for either massless line, and both take x and x - 1 from their own quadratics. dB0 keeps its two ratios correlated near the pseudo-threshold. - Zero-momentum tensor anchors put real masses of opposite sign on the wrong lip of log(1 - 1/x) (Im B1 off by pi, likewise B11, B111). - B1111 at p^2 = 0 had OneLOop's overall sign error in its mass-swap reconstruction (bub1111); the finite part now equals the Feynman parameter integral and the p^2 -> 0 limit. Triangles (triangle.rs, triangle_hv.rs): - Two- and three-mass real roots took a fixed lip instead of the lip OneLOop derives from p -> p(1 + i eps); wrong for some orderings, e.g. the reported top-mass triangles. Lips now follow the first-order shift, with square-root steps at r-function thresholds. - r-function roots are exact at p = 0 (analytically, as E + delta, so derivatives stay exact) and at (pseudo-)thresholds; r - 1/r is taken from the square root itself. trif3 keeps c = 0 exact, takes the small root from Vieta's product and skips charts with a double root at zero. - 't Hooft-Veltman C0: lips of y and z no longer come from rounding. Boxes (box_integral.rs, box_complex.rs): - Infrared boxes lost sheets in ratios; boxf1 dropped terms when one r-function vanished; boxf0 swapped root labels; boxf33 used another relabeling than OneLOop's boxf3 (falling back to a cyclic chart where that degenerates); boxf4 used fallback lips instead of the IEPS lips (the four-mass s12*s23 < 0 defect, reproducer now on by default). - Contour box: an exact double root of s3 gave 0/0; and at exactly real masses the residue logarithms, analytically real, took their lip from rounding (wrong by 2 pi i multiples on about a quarter of real-mass contour points with a pole inside, e.g. D0(2.63, 0, -1.22, 2.51, 0.624, 2.60; 0.5, 0, 0.5, 0.292)). They are now exactly real and follow the widths. OneLOop 3.6 itself differs from its own vanishing-width limit at some of these points; references for them are that limit (tests/data/real_mass_limits.txt). Tests: tests/permutation_regressions.rs checks 683 rows (OneLOop quadruple-precision references where its double result agrees) through the native code (hand-written and generated), the Expression and SymJIT backends and 256 bits (native and interpreted), their relabelings, the real-mass contour limits through every route, and the tensor-bubble anchors against Feynman-parameter values; the four-mass reproducer runs through every route; tests/native_tensor_binary64.rs now asserts the two tensor expression defects it only reported (opposite-sign anchors, NaN at m1 = 0). Rows where Symbolica's tracked-precision Float rounds exact cancellations (listed) are checked in binary64 only, and SymJIT's own operation order is allowed 1e-7 on the most ill-conditioned rows (its values there are unchanged from e0e61d6). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | - | - | - | - | 80h39m38s |
| Eval | - | - | - | - | - |
| Build | - | - | - | - | - |
| Suite | - | - | - | - | 80h39m38s |