Accuracy
How accurate is Vedaksha?
Accuracy
What is measured, and what is not.
Two classes of evidence live on this page, and they carry different guarantees. Keep them apart when you cite either.
Class A below is a per-body residual our own oracle tests print, against a committed 24,350-row JPL Horizons DE441 fixture the engine ships. Each Class A block carries the exact cargo test command that reproduces it; run it against a fresh checkout and you get the same numbers. The fixture itself is regenerable from a fresh JPL Horizons pull via scripts/generate_horizons_oracle.py in the engine repository.
Class B below is cross-validation against two national ephemeris agencies, measured with reference kernels the engine does not ship and its own CI cannot regenerate. It is a dated, provenance-stamped reading, not a number CI asserts on every push. The measurement was made with vedaksha-parity, now public: get it and the reference kernels yourself and re-run this table.
Per-body residuals, from our own oracle.
Measured against a committed 24,350-row JPL Horizons DE441 fixture the engine ships in tests/. Both providers describe the measured-Delta T era (1900-2025) only; neither figure implies anything about the other, and neither should be paired with the full 24,350-row fixture count.
Precisely what this measures
A longitude residual, against a barycentre, over one era.
Mean angular residual in apparent geocentric ecliptic longitude (of date) vs JPL Horizons. Not a general position-accuracy figure: the oracle fixture also stores ref_latitude, ref_distance and ref_speed (see oracle_comparison.rs), but none of those enter this number -- longitude only.
Comparisons query planetary-system barycentre IDs (Body::naif_id()), matching what the DE440s kernel stores and what SpkReader returns -- not physical planet centres. Querying centres instead would inject a spurious ~0.1 arcsecond offset for the outer planets (scripts/generate_horizons_oracle.py), the same order of magnitude as the headline mean itself.
SpkReader
DE440s kernel, 15,350 comparisons over 1900-2025.
Reproduce this table yourself:
cargo test -p vedaksha-ephem-core --release --locked --test oracle_comparison -- --include-ignored
AnalyticalProvider
VSOP87A + ELP/MPP02, no runtime data file, 13,815 comparisons over 1900-2025.
Reproduce this table yourself:
cargo test -p vedaksha-ephem-core --release --locked --test analytical_oracle -- --include-ignored
Beyond the measured era
Past 2025, this is Delta T, not ephemeris error.
Over the full 1900-2100 span both the engine and JPL Horizons must PREDICT Delta T rather than read it from the IERS record, and the two predictions diverge. The worst of that divergence, 44.9″ (Moon), is a time-scale disagreement, not a measurement of ephemeris accuracy, and must not be quoted beside the Class A figures above.
This is why the Class A tables above are scoped to 1900-2025 rather than the fixture's full 1900-2100 span.
Cross-validation against national ephemeris agencies.
Measured against reference kernels the engine does not ship and its own CI cannot regenerate. Dated and provenance-stamped below; treat it as a snapshot, not a live gate.
Cross-validation
Two independent national agencies.
Published 2026-09-01 · harness: A separate parity harness maintained by the same authors · engine v9.1.0.
These references were not shipped with the engine and were not exercised by this repository's CI. They were measured once, out of band, using a separate parity harness maintained by the same authors, and are reported here as a dated snapshot.
A separate parity-testing project that consumes this engine only through its published interfaces and holds its own local copies of the reference kernels. It is maintained by the same authors as this engine: what is independent is the methodology and the reference ephemerides, not the party performing the measurement.
The harness is public at github.com/arthiqlabs/vedaksha-parity. Bring your own copies of the reference kernels and this table is reproducible, not just legible.
By distance from J2000
Residual growth away from the epoch.
The “max” column below is a lower bound on the true worst case, not a measured worst case. A coarse date grid can alias a short-period oscillation and understate its peak; do not read these maxima as ceilings.
Not measured here
Three things this page is silent on, deliberately.
- House cusps. No figure on this page covers house-cusp placement or any house-system boundary. That validation does not exist yet; see the open backlog rather than assuming a silent pass.
- The true node. The osculating true-node figures above are agreement with JPL Horizons over the sampled epochs, not a claim of agreement with any other library's true-node computation, which can differ by construction (osculating vs. mean, and by perturbation model).
- Ayanamsha agreement with other implementations. Each ayanamsha system is checked against its own cited primary source and against an independent derivation of that same primary, never against another engine or software package. Agreement with another implementation is not evidence of correct derivation, so it is not tested for and not claimed.
Provenance
Clean-room, sourced.
Every external data source the engine ingests, and the cleanroom record behind the more contested derivations, are public in the engine repository.
- DATA_PROVENANCE.md — every external data source ingested, with primary URL, license status, fetch date, and content hash.
- docs/audit/ — dated clean-room and review records for the more contested derivations (lunar theory, ayanamsha, node direction rules), each naming what was checked and against what.
Further reading
The technical report.
A technical report on the engine's ephemeris pipelines, measured accuracy, and clean-room provenance, available as a PDF. It is not peer reviewed: read it as a detailed writeup from the people who built the engine, not as an independently refereed publication.
vedaksha-technical-report.pdf — the rendered report, unreviewed. The LaTeX source is also available for anyone who wants to build it themselves.