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 C scanf floating-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.