Skip to content

Releases: chang18/amflow-cpp

AMFlow.cpp 1.1.0 — Phase 3 oracle expansion + audit closure

12 May 04:27

Choose a tag to compare

Post-v1.0 audit-driven correctness pass + Phase 3 oracle diversity expansion. Together they close all silent-wrong-result paths surfaced by the post-release line-level MMA parity audit and open the project's five "we-didn't-think-of-this" oracle diversity axes.

Highlights

Audit table after v1.1.0: 86 🟢 verified / 0 🟡 unverified / 7 🔴 (6 fully fixed, 1 D5 deferred indefinitely) / 17 ⚪ not ported. Started at v1.0.0 with 65 🟢 / 21 🟡 / 6 🔴; the post-v1.0 pass closed every 🟡, fixed 6 of the 7 🔴, and surfaced D7 as the seventh — now fixed too.

Oracle suite: expanded from 12 (v1.0.0) to 20 cases. All 5 ROADMAP diversity axes have at least one parity-validated oracle:

Axis New oracle (v1.1.0) C++ vs MMA
Loop number L=4 banana_4loop_eps001 rel 7.2 × 10⁻³¹
≥3 kinematic invariants (electroweak) ewbox_1loop_eps001 rel 3.8 × 10⁻³⁰
Multi-cut Cutkosky (5-particle) cutbanana_4L_eps001 rel 2.2 × 10⁻³⁰
Mixed mass (some massive, some massless) bn3mix_eps001 (3-loop) rel 2.9 × 10⁻³⁰
ε extremes (D = 3 / eps = 10⁻⁴) cutbubble_1L_eps2 / cutbubble_1L_eps10000 rel 1.9 × 10⁻⁶⁴ / 1.0 × 10⁻³²

Notable architectural fix

D7 — dual-Kira-call master-count divergence (surfaced by the L=4 banana oracle). ibp::reduce and ibp::diffeq were restructured to mirror upstream's BlackBoxReduce / BlackBoxDiffeq two-call pattern: a Masters-mode preheat call (sector-wide enumeration via select_mandatory_recursively) followed by a Reduce-mode call (select_mandatory_list for the specific targets), both at the same (rank, dot). Each call runs in its own subdirectory because the Kira 2.x release refuses to share a $ReductionDirectory between the two calls.

See CHANGELOG.md, docs/AUDIT_MMA_PARITY.md, and docs/ROADMAP.md for the full picture.

Notes

  • Upstream MMA AMFlow limitation surfaced at eps = 1 (D = 2): an initial ε-extremes oracle attempt at eps = 1 hit an upstream DESolver edge case where the boundary returns a partially-symbolic expression instead of a numeric. This is an upstream-package limitation, not a C++ divergence; the v1.1.0 ε-extremes oracle uses eps = 1/2 (D = 3) as the next-most-extreme rational that yields a clean numeric.
  • D5 (complex-numeric kinematics) remains deferred indefinitely — see audit report for the architectural trade-off.

Attribution

This C++17 implementation re-implements the algorithms presented in the Mathematica package AMFlow by Xiao Liu and Yan-Qing Ma (arXiv:2201.11669, Comput. Phys. Commun. 283 (2023) 108565). All algorithmic credit belongs to the upstream authors.

AMFlow.cpp 1.0.0 — first public release

08 May 16:06

Choose a tag to compare

AMFlow.cpp 1.0.0 — first public release

A C++17 reimplementation of the auxiliary-mass-flow algorithm
(Liu & Ma 2023) for
multi-loop Feynman integrals.

Highlights

  • 12/12 oracle benchmarks match the upstream Mathematica reference at rel ~ 1e-30 (tools/bench/).
  • 508 GoogleTest cases (Kira-dependent ones auto-skip when AMFLOW_KIRA is unset).
  • Domain-oriented architecture under amflow::{numeric, algebra, ode, qft, ibp, pipeline, api, cli}, with strict ABI/PIMPL boundaries between domains.
  • CMake install / export — downstream projects can use find_package(AMFlowCpp 1.0) and link AMFlowCpp::amflow.
  • amflow_cli JSON driver covering amflow, black_box_amflow, and solve_integrals modes.
  • GitHub Actions CI matrix (Ubuntu × {gcc, clang}); SPDX-MIT headers across all C++ sources.

Quick start

sudo apt-get install -y build-essential cmake pkg-config \
  libflint-dev libgtest-dev nlohmann-json3-dev

git clone https://github.com/chang18/amflow-cpp.git
cd amflow-cpp
cmake -S . -B build -DAMFLOW_BUILD_DRIVER=ON
cmake --build build -j32
ctest --test-dir build --output-on-failure -j 4

# Raw ODE example (no Kira / Fermat needed):
./build/src/cli/amflow_cli examples/power_law.json

Full AMFlow workflows additionally require Kira + Fermat at runtime — see README.md.

Scientific attribution

This is a C++ port of the Mathematica package AMFlow by Xiao Liu and Yan-Qing Ma. All algorithmic credit belongs to the upstream authors. If you use this software in published research, please cite both the upstream paper and this repository — see CITATION.cff and NOTICE.

The upstream Mathematica source is not vendored. To regenerate Mathematica reference data locally, clone or symlink the upstream into reference/amflow-master/ (gitignored) — see reference/README.md.

Implementation provenance

This C++17 source was developed primarily by AI coding agents under the direction of the maintainer (canyi@fizzlycode.com), with every behavioural change gated by numerical-parity verification against the upstream Mathematica reference.

Out of scope (v1.0)

SolveIntegralsGaugeLink, HQET / SCET / Wilson lines. See AUDIT.md for the validated parity surface.

Full changelog

CHANGELOG.md.


Contact: bug reports / feature requests via GitHub issues; other inquiries via canyi@fizzlycode.com.