Validation¶
Numerical precision empyrean achieves against external references. The
numbers below come from the validation suite at
validation/runners/ in the empyrean monorepo, run on the same
test orbits across four channels: pure Rust (empyrean-core direct),
Python wheel (empyrean-py via the C ABI), pure C (linking
libempyrean.dylib directly), and ASSIST + JPL Horizons as
external references.
Cross-channel binding fidelity¶
All four empyrean delivery channels (Rust / C / Python / CLI) share the same C ABI for the integration kernel, so bit-for-bit agreement is the design goal. Binding fidelity — same propagation, same step grid, different language binding — should be at the floating-point floor:
Comparison |
Position residual |
|---|---|
Rust ↔ C (34 test orbits, Standard tier) |
bit-exact |
Rust ↔ Python — no non-grav |
5.68e-14 km (≈ 60 fm) |
Rust ↔ Python — Apophis +1095 d, non-grav |
bit-exact |
Rust ↔ Python OD (2018 LA) |
1.05e-12 AU (≈ 0.16 mm) |
RA / Dec / sep ephemeris |
bit-exact |
Trajectory sensitivity (chaos amplification)¶
Distinct from binding fidelity: when the same nominal trajectory is
propagated through a deep gravitational close approach, a tiny
seed-state perturbation (e.g. last-bit f64 differences from a
different host BLAS / FMA path) gets amplified along the post-flyby
chord. This is trajectory sensitivity, not a binding bug:
Comparison |
Position residual |
|---|---|
Rust ↔ Python — Apophis past 2029 Earth flyby |
0.4–3.6 km |
The amplification ratio for the 2029 Earth flyby is ≈ 10⁴ — a 60 fm
seed difference becomes 0.6 km a few weeks past CA. The pre-CA and
post-CA states still match bit-exactly within a single propagation
run; the divergence appears only when comparing separate runs that
took different f64 rounding paths.
External reference comparisons¶
Standard tier vs JPL Horizons + ASSIST on 34 NEO and main-belt test orbits:
Standard-tier force model matches ASSIST’s NEO model to mm-class position agreement at multi-year horizons for orbits not crossing a planetary close approach.
JPL Horizons sky-plane astrometry (RA / Dec / sep) bit-exact across all test rows.
Open issues¶
empyrean-t51u— sub-meter to ~30 m drift in geocentric range (Δρ) on perturber-set objects (Vesta, Eros) at multi-year horizons; the discrepancy is below the SB441 perturber accuracy floor and diagnosis is ongoing. Sub-arcsec ΔRA / ΔDec / Δsep on the same rows remain bit-exact.empyrean-5lqz— chaos-amplification divergence on Apophis past the 2029 Earth flyby. Suspected cause: numpy / PyO3 marshalling vs Cscanffloating-point parsing differences in the seed state.
External-reference comparisons¶
Standard tier propagation against ASSIST (the JPL/SBDB integrator empyrean’s force model is calibrated to match) on 34 NEO + main-belt test orbits:
Standard-tier force model matches ASSIST’s NEO model to mm-class position agreement at multi-year horizons for orbits not crossing a planetary close-approach.
The 2029 Apophis Earth flyby amplifies any small discrepancy by ~10⁴; sub-km divergence post-flyby is consistent with chaos amplification of seed-state and force-model differences, not with a methodology bug.
JPL Horizons comparison on sky-plane astrometry (RA / Dec / sep) for predicted ephemerides at observatory codes: bit-exact across all test rows.
Reproducing locally¶
The full validation harness runs from validation/runners/:
cd validation/runners/rust && cargo build --release
./target/release/validate run --tiers standard # rust prop+eph
./target/release/validate od # rust OD
# Compare to ASSIST
cd ../assist && ./setup.sh # ~98 MB DE440 download
./.venv/bin/python run_assist.py rust.json -o assist.json
# Cross-channel python
cd ../python && python run.py --input rust.json -o python.json
# Render the HTML report
cd ../rust
./target/release/validate report \
--results rust.json,python.json,c.json \
-o report.html
The report’s Section 09 — “Distribution Channel Fidelity” — gives a pass/fail at 1e-10 km tolerance for every test row across every channel. Use that as the regression gate when bumping any of the delivery layers.
What “validated” means here¶
Production astrodynamics work needs more than “the build passes.” The cross-channel fidelity above is the structural guarantee that all four delivery channels return the same numbers. The external-reference comparison is the physics guarantee that those numbers match what ASSIST and Horizons produce at the same precision.
For a workflow that depends on impact probability or B-plane geometry, run the validation suite once on your reference orbit before trusting empyrean’s output for that orbit. The harness is set up to make that a one-line operation.