Skip to content
sdiehlPublic

About

Sparse polynomial interpolation for Feynman integral reduction using Huang–Gao and Hensel lifting

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

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.

cargo build
cargo test
cargo run -p zippel-interp --example determinant
cargo run -p zippel-interp --example linsolve
cargo run -p zippel-laporta --example hello
cargo run -p zippel-laporta --example bubble
cargo run --release -p zippel-laporta --example box
cargo run --release -p zippel-laporta --example double_box
cargo run -p zippel-gcd --example demo

Example

The massless one-loop bubble with dots, reduced to its master integral $I(1,1)$, where

$$ I(a_1, a_2) = \int \frac{d^d k}{(k^2)^{a_1} ((k + q)^2)^{a_2}}, \qquad q^2 = s. $$

One-loop bubble

use zippel_laporta::ibp::Family;

let bubble = Family {
    vars: ["d", "s"].map(String::from).to_vec(),
    loops: 1,
    props: vec![(vec![1, 0], vec![]), (vec![1, 1], vec![])], // k^2, (k + q)^2
    lines: 2,
    legs: vec![vec![vec![0, 0, 2]]], // 2 q.q = 2s
    symmetries: vec![vec![1, 0]],
};
let (system, plan, coefficients) = bubble.reduce(&[vec![2, 1], vec![2, 2]], 2, 0).unwrap();
print!("{}", system.render(&plan, &coefficients));
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.

About

Sparse polynomial interpolation for Feynman integral reduction using Huang–Gao and Hensel lifting

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages