You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Upstream diffeq_solver/DESolver.m (the ODE engine, Layers 0–10).
Covered in Part I below.
Upstream AMFlow.m (the Feynman-integral pipeline, Layers 11–16).
Covered in Part II below.
Upstream ibp_interface/Kira/interface.m and the small Kira-glue
helpers. Covered in Part III below.
Line numbers cited below track upstream commit
efda1db
("add_version_number_1.2"), the snapshot taken when this port was
performed. Upstream may have moved on since (see
AUDIT_MMA_PARITY.md §5 for any drift), so
individual line numbers may be off in newer revisions.
Search by symbol name when in doubt. In-source // Mirrors AMFlow.m:NNN comments follow the same convention.
Use this map as a navigation aid when you need to translate a
Mathematica expression or trace why a result differs.
Conventions:
"Layer N" labels below are legacy module names from the v1.0
port. The current source tree is organized by domain under
src/<domain>/ (numeric, algebra, ode, qft, ibp,
pipeline, api, cli); see
docs/ARCHITECTURE.md for the current
organization. Layer 6/7 ↔ src/ode/, Layer 11-16 ↔
src/qft/ + src/ibp/ + src/pipeline/, Layer 17 ↔ src/cli/.
"—" means the function has no C++ counterpart, either because it is
a Mathematica idiom (e.g. MatrixDensity for diagnostics) or because
it is an internal helper that has been refactored.
Part I — DESolver.m (Layers 0–10)
Top of DESolver.m — Options block (lines 62-132)
.m symbol
C++
WorkingPre, ChopPre, SilentMode, RationalizePre
GlobalOptions fields
XOrder, ExtraXOrder, LearnXOrder, TestXOrder
ExpansionOptions fields
RunRadius, RunLength, RunCandidate, RunDirection
RunningOptions fields
SetGlobalOptions[opt]
set_global_options(GlobalOptions)
SetExpansionOptions[opt]
set_expansion_options(ExpansionOptions)
SetRunningOptions[opt]
set_running_options(RunningOptions)
SetWorkingPrecision[p]
working_prec_bits(), decimal_digits_to_bits(int)
AMFN[a]
implicit (we work in arbitrary precision throughout)
ode::calc_taylor(...) for post-BuildTaylor matrices
CalcInf[de, bcs]
ode::solve_at_infinity(...)
Regular point (lines 798-849)
.m symbol
C++
ExpandNHEquationsNum[nheqn, x0]
expand_nh_equations_num(nheqn, x0)
Calcx1x2[nheqn, bc, x0]
calcx1x2(...) (returns TaylorCoefficients)
CalcRun[de, bc, run]
calc_run(...) (overloads taking RationalMatrix or vector<BlockEquationNum>)
Zero (lines 852-917)
.m symbol
C++
Calcx00[nheq, nheqn, bc, x0, behavior]
C++ boundary: ZeroRecurrenceTable, ZeroCoefficientStore, build_zero_lower_sources(...), build_zero_recurrence_block(...), solve_zero_boundary_block(...), ZeroBlockRotation, solve_zero_blocks(...)
FindLogPower[exp]
find_log_power(exp)
LearnFromRuleS[rules]
learn_from_rule_s(asy)
LearnFromRuleSAll[ruleslist, blocks]
learn_from_rule_s_all(asy_list, blocks)
ExtendExpansion[exp, n]
extend_expansion(exp, n)
PlusExpansion[exps]
plus_expansion(exps)
RescaleExpansion[exp, order]
rescale_expansion(exp, order)
PlusRuleS[rules0]
plus_rule_set(region)
UnionRuleS[rules]
union_rule_set(asy)
PSTimesRuleS[ps, rules]
ps_times_rule_set(ps, asy)
PSMapRuleS[psmap, ruleslist]
ps_map_rule_set(psmap, asy_list)
ToPS[poly]
to_power_series(rf), to_power_series_matrix(mat)
CalcZero[de, bc, x0]
C++ path: ode::solve_at_zero(...); CalcZero algebraic-Jordan fallback: normalize_mat_for_calc_zero(...), ZeroBlockRotation, asymptotic_behavior_from_rotations(...), rotation overload of solve_zero_blocks(...)
TimesAsyExp[rational, asyexp]
times_asy_exp(rational, asy)
PlusAsyExp[asyexplist]
plus_asy_exp(list)
System handle (lines 989-1080)
.m symbol
C++
LoadSystem[sysid, de, bc, point]
C++ uses value entry points instead of a mutable handle
ClearSystem[sysid]
System destructor (RAII)
DE[sysid]
System::de()
BC[sysid]
System::bc_singular() / System::bc_regular()
P[sysid]
System::point() (or point_at_infinity())
AsyExp[sysid]
System::asy_exp()
InfToRegular[sysid, x0]
C++ internal step in ode::solve_ode(...)
RegularRun[sysid, run]
ode::solve_ode_from_regular(...)
RegularInterpolation[sysid, samples]
ode::regular_interpolation(de, boundary, point, samples, options)
SolveAsyExp[sysid]
C++ internal ode::solve_at_zero(...) step
AMFlow inside DESolver.m (lines 1091-1138)
.m symbol
C++
PickZeroRuleS[rules]
ode::pick_zero_solution(asy, chop, prec)
$InternalSystem
local System instance inside amflow(...)
AMFlow[de, bc]
ode::solve_ode(de, boundaries, options) with an explicit-poles overload
Part II — AMFlow.m (Layers 11–16)
This part of the .m source introduces the Feynman-integral concepts —
families, JIntegrals, top sectors, regions, eta injection,
SingleMass / Cutkosky ending schemes, and the BlackBoxAMFlow
top-level driver. The C++ side reorganises this into Layers 11–16
(see docs/ARCHITECTURE.md for per-layer detail).
Multivariate algebra primitives
These have no direct .m counterpart — Mathematica handles them via the
built-in symbolic engine. The C++ project must implement them
explicitly because we use FLINT/Arb.
Concept (.m idiom)
C++
Symbolic polynomial in {eta, eps, x[1], ..., x[k]}
not ported — HQET / SCET / Wilson lines are out of scope for this port
These are exposed on the C++ side in Layer 17. amflow_cli covers
raw amflow, sampled black_box_amflow, and solve_integrals JSON
modes. The CLI tree under src/cli/ provides solve-integrals JSON
payload/result, kinematic-family sourcing, planned execution, a
top-level JSON runner, and JSON child-subtree spec adapters, with
amflow_cli being the standalone binary adapter over that runner.
The JSON runner maps amf_options.ending_schemes,
amf_options.max_recursion_depth, and the supported
amf_options.amf_modes / eta_modes into
amflow::AmflowPlanOptions before planning.
Part III — ibp_interface/Kira/interface.m and helpers
This is the small Mathematica module that wraps Kira sub-process
invocation. In C++ the equivalent lives in Layer 15 (kira.hpp,
blackbox.hpp).