FunBoot is a functional conformal bootstrap solver leveraging the power of outer approximation: analytic-functional actions on the crossing equation are precomputed into tables, and bootstrap bounds are obtained by solving the resulting semi-infinite linear program with a simplex method inside an outer-approximation loop.
This is the second generation of the solver, rebuilt for the ill-conditioned linear programs that appear at high derivative order:
- Two-tier extended-precision simplex — runs in
Float64and escalates the basis algebra to double-double (Double64, ≈32 digits) when a per-iteration conditioning indicator ‖I − B⁻¹B‖ shows double precision running out of margin; objectives and residuals are cross-checked in 256-bitBigFloat. - Local barycentric interpolation of the functional tables via the registered LocalBarycentric.jl package (spun off from this solver), machine-precision faithful at every precision tier.
- Dynamic gap refinement — automated objective-sharpening steps that concentrate optimization pressure on the leading operator of the gapped channel.
- Deterministic and reproducible — pinned environment (
Manifest.toml), bit-level golden regression check (check_runexample.sh, seerunexample.md), and exact checkpoint/resume for long runs.
Requires Julia ≥ 1.12.
using Pkg; Pkg.add(url="https://github.com/Canonical111/FunBoot")or clone the repository and run julia --project -e 'using Pkg; Pkg.instantiate()'
to reproduce the exact pinned environment.
For enhanced performance, load AppleAccelerate on macOS with Apple Silicon or MKL
on Intel CPUs before running.
./check_runexample.sh reruns the golden reference computation (a λ=7 gap
maximization) and checks two SHA-256 hashes: the physics result and the full simplex
pivot path, both of which must match bit-for-bit. See runexample.md for the
documented reference values. The functional tables themselves are distributed with
the accompanying paper's data release.
The first-generation, double-precision solver used in
arXiv:2307.11144 is preserved unchanged at the
tag v1.0-paper-2307.11144
(also branch v1).
If you use FunBoot, please cite arXiv:2307.11144 (first generation) and the forthcoming paper describing this version.