zippel
A bunch libraries to support doing Feynman integral reduction by sparse interpolation over finite fields in Rust.
IBP systems are eliminated numerically modulo word-sized primes, and the exact rational coefficients are recovered from evaluations alone.
zippel-interp: Zippel's black-box sparse polynomial interpolation over prime fieldszippel-interp::rational: Rational function reconstruction ala the method of Thiele and Zippelzippel-interp::benor: Ben-Or/Tiwari interpolation from about two evaluations per termzippel-interp::geometric: Sparse recovery with smooth-subgroup exponent decodingzippel-lift: Lifts to Q by CRT and rational number reconstructionzippel-laporta: IBP generation and Laporta elimination over GF(p)zippel-laporta::block: Adaptive block-triangular reduction over GF(p)zippel-gcd: Multivariate GCD, cofactors and LCM of polycore polynomialszippel-gcd::zippel: Zippel's modular GCD with LINZIP interpolationzippel-gcd::huang_gao: Huang–Gao GCD by separated Hensel lifting (asymptotic SOTA, 2026)zippel-gcd::huang_monagan: Huang–Monagan GCD by prime substitutionzippel-gcd::hu_monagan: Hu–Monagan GCD and cofactor interpolationzippel-gcd::hu_monagan_bivariate: Hu–Monagan GCD with bivariate images
Example
The massless one-loop bubble with dots, reduced to its master integral $I(1,1)$, where
$$ I(a_1, a_2) = \int \frac{dd k}{(k2){a_1} ((k + q)2){a_2}}, \qquad q2 = s. $$
use Family;
let bubble = Family ;
let = bubble.reduce.unwrap;
print!;
I(2,1) = (-d + 3) / (s) * I(1,1)
I(2,2) = (d^2 - 9*d + 18) / (s^2) * I(1,1)
License
MIT Licensed. Copyright 2024-2026 Stephen Diehl. See LICENSE for details.