Your free trial has ended.

Try the live demo or log in .

89631b34

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

Keep the shared definitions compact: register r-function and root helpers

26aad03 inlined the r-functions of the triangles (exact roots at zero
momentum and thresholds), their quadratic roots and the root lips into
every continued product and dilogarithm of the finite formulas. The
shared definitions grew to 5.7 GB (the two-mass C0 sector alone 4.7 GB,
the three-mass triangle 0.9 GB): OneLoopExpressions::new took 80 s and
16 GB, and every evaluator built from it 4 s (NinjaRS's interpreted
masters: 100 s, 19 GB per reduction).

r_function_of, r_function_inverse_gap, the ordered quadratic roots and
root_lip_or are now registered helpers (__olo_rfun_of_root, ...), so the
formulas refer to them by calls. The definitions are 59 MB in total
(largest body 19 MB, below e0e61d6's 13.6 + 9.6 + 8.6 MB sectors), built
in 0.35 s; evaluators take milliseconds, native generation 10 s instead
of 2 min, and the full test suite 8 min instead of 93. Values are
unchanged up to the evaluation order: two-mass triangles with a small
complex mass reach 4.2e-10 in the binary64 interpreter (tolerance now
5e-10), and six more Gram-singular two-mass rows (which the original
expressions also fail at 256 bits) join the rows checked in binary64
only. tests/expression_construction.rs bounds the definition sizes and
the construction times.

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