MEASURED · FAST · INDEPENDENT · LICENSED

TKS EPHEMERIS

Independent Astronomical Computation Platform

BIGGER & FASTER THAN SWISS EPHEMERIS*

*Bigger scope — a ~34,600-year deep-time catalogue layer, 27 bodies and 117,955 stars; the TKS-EPH series runs from a 1.9 MB, 100-year kernel (TKS-EPH-1) to a 28.5 MB file for 1,100 years (TKS-EPH-2, 1550–2650 CE) where the full reference kernel needs 120 MB and Swiss's long-range files 94 MB. Faster — 0.038 s vs 0.148 s for Swiss Ephemeris (3.9×; Swiss's C library, positions only; 0.266 s if Swiss also computes speeds) for the same 110,000 apparent positions, measured on one machine in one run with TKS-EPH-2. A benchmark of speed and of agreement with the reference ephemeris, not of observational accuracy; methodology and reproduce steps in TKS benchmarks.

34,600 YEARS27 BODIES117,955 STARS0.35 µs / POSITION

Reference & apparent astronomy, independent N-body dynamics and stellar–Galactic dynamics — one Rust framework, no FFI.

Deep-time discoveries: Lunar recession · Eclipse extremes · Lunar extremes · Conjunction extremes · Pañcāṅga coincidences · Solar-day extremes · Stellar encounters

Pañcāṅga, eclipse and chronology catalogues are applications computed from the same framework — not the platform itself.

Applications: Pañcāṅga · Eclipses · Solar system · Encounters · Deep time

TKS EPHEMERIS zodiac · nakṣatra belt · live inner planets · 5 days/s (Engine A)

“From planets to stars, from the present to 34,600 years — one unified, high-performance engine.”
TKS EPHEMERIS

📅
34,600years−15,400 … +19,192 CE · 30,189 yr inside DE441 + two reconstructed Engine-B bands
≡
64.4 Mtransitionsover the 30,189-yr TKS Ephemeris interior · tithi · karaṇa · nakṣatra · yoga · saṅkrānti · rāśi · ayana · phases
◐
162,200eclipsesSolar & lunar · 144,168 in DE441 + 18,032 reconstructed
★
117,955starsHipparcos · 2.83 MB (1.98 MB brotli) · 24 B/star
Deep-time ruler−15,400 … +19,192 CE · what is covered, and by what
TKS Ephemeris reference · 30,390 yrcatalogue scan · 30,189 yr76 client tiles · 30,400 yrEngine-B reconstruction · 2 × ~2,000 yr
⚡ TKS-EPH-2  ·  measured on this code, 2026-10-08 · same machine · same run · same 110,000 positions

A high-performance astronomical computation engine for applications that need speed, precision and long-span computation.

3.9×
FASTER THAN SWISS EPHEMERIS · C LIBRARY
one thread · 0.347 µs vs 1.35 µs per apparent position (positions only, both sides · 7× if Swiss also computes speeds, its default)
41× on 14 cores vs Swiss on 1 thread · 0.033 µs / position
race · 110,000 apparent positions
0.148 s
0.074 s
0.038 s
0.004 s
bars fill in proportion to the measured wall-clock times (10× slowed so the eye can follow); counters show positions computed so far. Swiss with speeds (its default flags): 0.266 s in C, 0.291 s through Python.
fidelity to the reference ephemeris · max error, milliarcseconds (log scale) · lower is betterTKS-EPH-2 Swiss files
TKS-EPH-2: maximum over its whole 1550–2650 span against the DE440 file it was fitted from (the 1950–2050 subset gives the same ≤ 0.33 mas; target 0.3). Swiss column: Swiss Ephemeris 2.10.03 data files (DE431-based) against DE440 with the same reduction flags; the outer-planet gap is mostly the older solution inside those files, not a defect of Swiss's code.
0.33 mas worst body 28.5 MB 1550 – 2650 CE SHA-256 per release · reproducible build Commercial licence · evaluation free · developer · production · enterprise · academic / research grant free on request Rust · C · Python · WASM in the licence 0.5 mas rms vs Skyfield + DE441

Apple M3 Max, release build, best of 3. Position = geocentric apparent longitude (light-time, aberration, solar deflection, true equinox of date), 11 bodies × 10,000 days. Swiss Ephemeris 2.10.03 timed from C (the library inside the pyswisseph wheel, real .se1 files, no Python in the loop), position-only to match TKS; with speed computation, Swiss's default, it is 2.42 µs/position. A benchmark of speed and of agreement with the reference ephemeris (DE440) — not a claim about observational accuracy of either library.

27 Bodies

10 bodies (Sun, Moon, 8 planets) + true node + 16 massive asteroids.

Learn More →

117,955 Stars

Hipparcos catalogue · 2.83 MB raw / 1.98 MB brotli · 24 B/star.

Explore Star Catalogue →

30,400-Year Tiled Ephemeris

76 tiles × ±200 years · 166 MB brotli · 2.19 MB per tile · fast random access.

See Data Format →

🪔 PAÑCĀṄGA

64.4 M transitions · 30,189 yr (TKS Ephemeris interior)
Tithi · Nakṣatra · Yoga · Karaṇa · Saṅkrānti · Ayana · Eclipse catalogue
Try Live Pañcāṅga →

🔭 TKS RESEARCH LAB

Stellar encounters · Galactic dynamics · Oort cloud · Deep-time astronomy
  • GJ 710 encounter
  • HD 7977 study
  • Milky-Way dynamics
Explore Research →

⚙ THREE ENGINES

A Reference & apparent astronomy
B Solar-System N-body dynamics
C Stellar & Galactic dynamics
Compare Engines →

✓ VALIDATION & ACCURACY

  • ≤ 1.1 m vs Horizons (independent check)
  • ≈ 0.047″ angular agreement
  • NASA 5MC validation
  • Reproducible methodology
See Validation →
TKS Discoveries

What does the sky reveal when we search 30,390 years?

totality · 7m 43.6s
TKS Discovery
7m 44s 7.73 min
Longest total solar eclipse
10,868 BCE — inside the TKS 30,390-year interval
TKS finds a 7m43.6s total solar eclipse in 10868 BCE — 14.3 seconds longer than NASA's 7m29.28s greatest-duration point for the famous 2186 eclipse.
NASA stated theoretical maximum: 7m32.1s
Explore Eclipse Extremes →
Moon drifting outward
TKS Discovery
+3.997 cm/yr
Lunar recession
+1.215 km over 30,390 years
DE441 secular trend recovered by TKS evaluation · LLR ≈ +3.8 cm/yr
Explore Lunar Recession →
true relative sizes · ×1.141
TKS Discovery
356,318 km
Record perigee
10,938 BCE
406,721 km · record apogee · 9,982 BCE
Explore Lunar Extremes →

30,390 years searched · millions of astronomical events
extremes · patterns · encounters · transitions

Deep time · Oort-cloud shells & approaching stars Engine C · catalogue · GJ 710 · engine detail

…
0.000 Myr
Every encounter-class star: closest approach b (log scale) against the epoch of closest approach. Click a point to jump there.
Each track has the straight-line shape r(t) = √(b² + v²(t − tc)²), φ = atan(v(t − tc)/b) in the plane of the pass, with b the catalogue's headline closest approach — the Galactic-tide solution (linearised tide vs full two-orbit integration: median 0.35 %). For Galactic-dominated stars (HD 7977, TOI-4172 …) that b is 10–40× smaller than the straight-line value, which each star's card also shows; the true path of such a star bends, so the track is a stylised guide while b and the epoch are the data. The azimuth of each track is arbitrary. Shells: Hills / inner Oort 2×10³–2×10⁴ AU, outer Oort 2×10⁴–2×10⁵ AU. Planetary region (< 10³ AU) is off-scale. Duplicate catalogue rows (HD 168442 = GJ 710, HD 7977 twice) are counted once.

Three engines · three domains

Reference & apparent astronomyEngine A
  • DE440 / DE441 state data as reference states (not a runtime dependency)
  • Own SPK/DAF evaluation · own time scales (TDB · TT · UT1, ΔT)
  • IAU-2006 precession (±1,000 yr) with Vondrák-2011 long-term precession beyond · IAU-2000B nutation · light-time · aberration · deflection
  • Apparent place → ecliptic → sidereal — the TKS Ayanāṃśa
Reproduces the reference states to ≤ 1.1 m and independent apparent positions to ≈ 0.047″. Try it live → · engine detail →
Solar-System dynamicsEngine B
  • 11-body gravitational integration (Sun · 8 planets · Moon · Pluto)
  • DOPRI5 adaptive integrator, own initial conditions from a DE epoch
  • EIH 1PN relativistic correction · Earth J2–J6 · C22/S22 · Sun J2
  • Long-term propagation, incl. beyond the reference-kernel coverage edge (labelled reconstruction)
1,000-yr propagation against DE440: 627 km (Sun) · 12,174 km (Pluto) — and 759,011 km for the raw 11-body Moon. That lunar result is why the Moon gets its own solution (DE kernel inside coverage, fitted lunar series beyond: ~400–580 km at 1,000 yr) — full block and reproduce command: long-term dynamical validation →
Stellar & Galactic dynamicsEngine C
  • 6D stellar trajectories from published astrometry, per-row source provenance
  • Galactic potential: six named models incl. a Ferrers bar and calibrated spiral arms
  • Stellar encounters · closest approaches · linearised tide vs full two-orbit integration
  • Oort-cloud perturbation research: impulse, orbital-energy and angular-momentum change
Catalogue: 162 stars · 141 with a determined distance · 26 encounter-class (< 1 pc) (±8 Myr). Encounter catalogue →
How to read the names. Engine A / B / C are the internal code names (they appear in the API, the validation tables and the papers); the domains above are what they compute. The platform is TKS Ephemeris, a computational framework — Pañcāṅga, eclipses, chronology and the deep-time catalogues are applications computed from it. Engine C is the newest domain: it answers what the Solar System's neighbours do — see GJ 710 and the encounter catalogue.

Computational scale

~34,600years of coverageDeep-time catalogue span: TKS Ephemeris −13,000…+17,189 (~30,189 yr) plus Engine-B beyond-edge bands (±2,000 yr each).
~64.4 Mastronomical transitions64,435,933 precomputed transitions: tithi, karaṇa, nakṣatra, yoga, saṅkrānti, rāśi ingress, ayana, moon phases.
162,200eclipse events144,168 within TKS Ephemeris + 18,032 beyond-edge reconstructions; solar and lunar, with Besselian elements and ΔT.
−13,200 → +17,191years · Engine A (TKS Ephemeris) reference span = 30,390 yrEngine A's reference kernel covers −13,200-05-06 … +17,191-03-15 = 30,390 yr — read from the kernel itself and pinned by a test, never quoted from prose. The catalogues scan the inner range −13,000 … +17,189 = 30,189 yr. Outside it Engine B takes over, labelled a reconstruction.
341 MB precomputed layer · O(log n) event-stream lookup · ~2.5 ms warm response. Every count here is quoted from the release manifest data/catalogue_manifest.json — the single authoritative source — and the live framework can reproduce any of it. Scale is not accuracy; that is a separate claim, below.

Validation

Against independent implementations test-time, never runtime

SPK state reproductionposition ≤ 1.1 m
SPK state reproductionvelocity ≈ 10⁻¹⁰ km/s
Reference comparedjplephem · DE421 · DE440 · DE441
Apparent astronomyICRF RA/Dec ≈ 0.046″ vs Skyfield
Apparent astronomyecliptic λ/β ≈ 0.047″ vs Skyfield
Time scalesΔ = 0 s vs xalen
Deep-time frame · −13,000 … +17,000Moon–Sun elongation ≤ 0.8″ · Lahiri vs Swiss ≤ 0.03° · tithi/karaṇa 2978/2978 vs DE441 (Vondrák precession)
Eclipse engineNASA 5MC · 0 saros · 0 true type mismatches
Origin of the codenative Rust · zero FFI · zero runtime deps in the astronomy kernel
Three different claims, deliberately kept apart: ~34,600 years is coverage, ≤ 1.1 m is a state reproduction against another implementation, and 0.047″ is an apparent-position cross-check. None of them is a statement about observational accuracy, and beyond the DE coverage edge everything is a labelled reconstruction. Full report: Validation & Trust Report · eclipse cross-check: NASA Five Millennium Canon.

What is deliberately not claimed

Observational accuracynot claimed from a code-vs-code comparison
Beyond +17,191 or before −13,200reconstruction — phase and timing degrade with span
Million-year calendarrunnable, not verified: uncertainty grows
Catalogue completenessnot a survey — each catalogue states its scope
The same rule the research pages follow: every number is attributable to a named artifact or an independent reference, and where no independent reference exists we say so instead of inventing one.

Long-term dynamical validation

1,000-year propagation against DE440 own 11-body integration · seeded at J2000

Sun627 km
Pluto12,174 km
Raw 11-body Moon759,011 km
Read these as deviation from a reference ephemeris — a propagation-consistency measure. They are not observational accuracy, and not an error bar of the reference ephemeris itself. Reproduce: cargo run --release -p tks-ephemeris --example engine_b_span 1000 5 0 (barycentric, per body; 97 s of integration for this checkpoint on this machine).

Why the Moon gets its own solution

The lunar result motivates a dedicated lunar solution: DE kernel within its reference-ephemeris coverage, with a fitted lunar series used beyond it.
1,000-year lunar test~400–580 km fitted-series deviation (interior of band)
Same test at the band edge≤ 1.25 × 10³ km (11.3′) — the worst place in the band
Longest span tested (2,000–4,000 yr)still ≈1.25 × 10³ km — the series does not accumulate error
Same span, raw 11-body Moon759,011 km — phase lost (≈62°)
Reproduce… --example moon_series_check

Checkpoint detail barycentric Δ vs DE440 · 100 / 500 / 1,000 yr

checkpoint100 yr500 yr1000 yr
Sun44 km322 km627 km
Mercury567 km13,380 km53,626 km
Venus45 km324 km624 km
Earth104 km4,138 km9,755 km
Moon — raw 11-body12,526 km314,341 km759,011 km
Moon — fitted series future band, edge-adjacent1,275 km1,259 km1,254 km
Moon — fitted series past band, edge-adjacent807 km745 km656 km
Mars62 km470 km700 km
Jupiter76 km382 km765 km
Saturn30 km336 km677 km
Uranus193 km1,223 km2,274 km
Neptune920 km5,805 km12,716 km
Pluto775 km7,299 km12,174 km
Every row is the same quantity: distance between our propagated state and the DE440 state at that epoch. The Moon's columns are the measurement that motivated the separate lunar path above — the integrator is not wrong about the Moon, it simply cannot hold a 27-day phase over centuries. The two fitted series rows are that solution measured at the same spans in its own band (window ending at the band's outer edge — the worst place in the band, and where the ±2,000-yr catalogue sits): note that their deviation barely moves between 100 yr and 1,000 yr, because a fitted series does not accumulate error the way an integrator does.
Application · built on the TKS framework
TKS Pañcāṅga — Traditional astronomical calendar computed from the TKS astronomical framework

Not a stand-alone calendar algorithm: every limb below is derived from the same DE441 reference states, apparent-place chain and star-defined ayanāṃśa that the ephemeris domain uses — then frozen as a precomputed deep-time layer (~64.4 million transitions over the 30,189-yr DE441 interior; the eclipse layer extends to ~34,600 yr).

TITHI · KARAṆA · NAKṢATRA · YOGA · PAKṢA · MĀSA
SAṄKRĀNTI · AYANA · MOON PHASES · RĀŚI · CONJUNCTIONS · UDAYA–ASTA · GRAHAṆA
TKS Ephemeris apparent places · TKS Ayanāṃśa · 16+ event classes · O(log n) lookup · ~2.5 ms warm response

Pañcāṅga — transition physics

Sun λ
apparent · tropical
Moon λ
apparent · tropical
↓ Δλ = λ☾ − λ☉
TITHI
Δλ / 12° → 30
↓ Moon λ (nirayana)
NAKṢATRA
λ☾ / 13°20′ → 27
↓ λ☉ + λ☾
YOGA
(λ☉+λ☾)/13°20′ → 27
↓ Δλ / 6°
KARAṆA
Δλ / 6° → 60
One precomputed transition layer — no ephemeris scan. Each limb is an O(log n) event stream; any date+place Pañcāṅga = these streams ∩ (sunrise…sunset). Live markers = today's limbs.
Independent astronomical computation
REFERENCE STATES → ENGINE A → APPARENT ASTRONOMY → ECLIPTIC → SIDEREAL / PAÑCĀṄGA
                    ↘ ENGINE B · N-BODY DYNAMICS

Engine A

  • DE440 / DE441 reference states
  • Independent SPK / DAF evaluation
  • IAU 2006 precession · IAU 2000B nutation
  • Light-time · aberration · deflection

Engine B

  • 11-body N-body propagation
  • DOPRI5 adaptive integrator
  • EIH 1PN relativity
  • J2–J6 · C22/S22 gravity field

Validation

  • SPK reproduction ≤ 1.1 m
  • Apparent position ≈ 0.047″ vs Skyfield
  • Time scale vs xalen · Δ = 0 s
  • full ~34,600-yr eclipse catalogue + live scan (release)

★ TKS Ayanāṃśa — TKS Ayanāṃśa

α Virginis (Spicā) · HIP 65474 ↓ ICRS + proper motion ↓ ecliptic of date ↓ λ − 180° ↓ 24.216901°
  • Star-defined · Dynamic · Non-hard-coded
  • Lahiri (ICRC-1956) 24.232929° — within ~1′ (Δ ≈ 57.7″)
  • Zero-ayanāṃśa epoch ≈ 285 CE (engine 285.47)

Research · active investigations stellar encounters · galactic dynamics · Oort cloud · deep-time astronomy · eclipse chronology · TKS Ayanāṃśa

Research areas

Solar-System dynamicslong-term 11-body propagation, benchmarked against the reference ephemeris
Stellar encountersclosest approaches of catalogue stars, past and future
Galactic dynamicsdoes an encounter need the Milky-Way potential? (the S criterion)
Oort-cloud dynamicsimpulse, orbital-energy and angular-momentum change
Long-term ephemeris validationcoverage vs accuracy · σλ(t) from an initial-condition Monte-Carlo
Eclipse chronologydeep-time eclipse catalogues, cross-checked on the NASA 5MC
Sidereal astronomystar-defined ayanāṃśa · the TKS Ayanāṃśa programme
Historical astronomykāla-nirṇaya: paired eclipses and ayanāṃśa at claimed epochs

How a result is published here attributable by construction

Source of numbersa named artifact or an independent reference — never a hand-typed figure
Paper draftsdocs/tks-sensitivity-paper.md (stellar-encounter study)
Reproducethe page prints the exact command for every artifact it shows
Disagreementskept visible: HD 7977 vs the published catalogues is printed, not hidden
Self-correctionsrecorded inline when a definition or denominator was wrong

GJ 710 · flagship flyby Level 1–4

Closest approach10,533 AU @ +1.29 Myr
Published value10,520 AU — engine inside the interval
Galactic term+120 AU (1.14 %) — 3.8× below the astrometric error bar
Tide vs full orbitsΔb = +2.6 AU (0.024 %)
The anchor case for “the Galaxy is not always the answer”. GJ 710 page →

HD 7977 · the published disagreement Engine C case study

Straight line30,571 AU @ −2.80 Myr
Full Galactic potential2,312 AU — a −92 % correction
Tide vs full orbitsΔb = −112.6 AU (4.87 %)
Why we differinput revision (DR2 → EDR3), stated not hidden
One star, four dynamical levels, a factor-13 divergence — and the honest reason for it. Case study →

Stellar-encounter catalogue Engine C · with published values

Stars / rows162 unique · 164 rows (twins marked)
Determined distance141 (parallax S/N ≥ 3)
Encounter class < 1 pc27 (±8 Myr)
Empirical resulttide vs full orbits: median 0.35 %, worst 71.96 % (TOI-4172)
Every row carries a published comparison, an A·B·C verdict and the DR2→EDR3 revision. Catalogue → · paper: docs/tks-sensitivity-paper.md

Deep-time eclipse catalogue Engine A + B

Events162,200 over ~34,600 yr
Within DE441144,168 (−13,000 … +17,189)
Beyond-edge18,032 (Engine-B reconstruction)
NASA 5MC cross-check23,962 events · 0 true type mismatches
Also the input to eclipse chronology at claimed historical epochs. Eclipse catalogue → · Kāla-nirṇaya →

What the applications compute

The framework converts a planetary state into an apparent astronomical position and then into traditional sidereal / Pañcāṅga quantities: state → apparent place → ecliptic longitude → ayanāṃśa → nirayana longitude → rāśi / nakṣatra / tithi. The same chain without the last step is what the ephemeris and validation endpoints return; the eclipse, chronology and stellar-encounter applications branch off it at the apparent-place stage.
Numerical precision ≠ physical accuracy ≠ observational uncertainty — all three are distinct.

Status · Provenance

Layer status

State source
TKS Ephemeris reference
State evaluation
Independent Rust DAF/SPK + Chebyshev type-2 · TKS-EPH-N fitted files (.tkseph): TKS-EPH-1 · 100 yr · 1.9 MB · Moon ≤ 0.1″ — TKS-EPH-2 · 1550–2650 · 28.5 MB · ≤ 0.33 mas
Astronomical reduction
IAU 2006 precession (±1,000 yr) · Vondrák 2011 long-term precession beyond · IAU 2000B nutation
Sidereal models
Lahiri (ICRC 1956) · Chitra (true Spica)
Dynamical engine
TKS-B N-body · EIH 1PN · J2–J6 · C22/S22
Stellar & Galactic
Engine C · 6D stellar trajectories · Milky-Way potential · encounters
Validation
jplephem · Skyfield (0.5 mas rms, Moon and planets) · SOFA ld · Swiss Ephemeris timed from C
TKS-EPH-2 licence
native library · C ABI · Python · WebAssembly · data files · API — commercial licence (evaluation build 1950–2050 free: live demo; academic / research grant free on request)

Provenance

Third-party notices
IAU 2000B nutation table and routines derived from ERFA/SOFA (BSD-3), ΔT tables from xalen-time (Apache-2.0) — licence texts: /third-party-notices
JPL DE440/441
source trajectory data of the TKS-EPH files (NASA/JPL, public) — credited here; TKS-EPH is not affiliated with or endorsed by NASA/JPL
TKS
independent numerical evaluation and astronomical reduction
IAU
reference astronomical conventions (precession/nutation/frames)
TKS-B
independent numerical dynamics (N-body)

Architecture — pipeline science → astronomy → sidereal → pañcāṅga

TKS Ephemerisreference state source
↓
TKS SPK / DAF evaluatorChebyshev type-2 · independent Rust
↓
Geometric → Apparentlight-time · aberration · deflection · precession · nutation
↓
Ecliptic of datetropical λ, β
↓
SiderealLahiri / Chitra → nirayana
↓
PAÑCĀṄGAtithi · nakṣatra · yoga · karaṇa · rāśi · saṅkrānti
DE440 / DE441reference
│
Engine Areference path
│ initial state ↓
TKS Engine BN-body + 1PN + J2–J6 · C22/S22
↓
Common Ephemeris APItrait Ephemeris
Engine A and Engine B expose the same State API; the layers above are unchanged.

TKS astronomical baseline catalogue · architecture

Layer architecture one framework, two consumers

                  TKS EPHEMERIS
                        │
               DE440 / DE441   (reference states)
                        │
              Independent Rust SPK · apparent place · ecliptic · sidereal
                        │
         ┌──────────────┴──────────────┐
         │                             │
    LIVE COMPUTATION            BASELINE CATALOGUES
         │                             │
         │                  ┌──────────┼──────────┐
         │                  │          │          │
         │               Eclipse    Pañcāṅga   Planetary
         │                  │          │          │
         │               162,200     ~64.4M      rāśi-ingress
         │               events    transitions   + Besselian
         │
         └──────────────┬──────────────┘
                        │
                  FAST API / CLI
                        │
                Pañcāṅga / Web
    
A unified, precomputed, queryable astronomical-event layer over ~34,600 years — eclipses (162,200: solar + lunar, with Besselian elements & ΔT) and Pañcāṅga transitions (~64.4M: tithi · nakṣatra · yoga · karaṇa · vāra · saṅkrānti · rāśi-ingress · ayana · lunar phases · planetary rāśi) — served by O(log n) catalogue lookups, with the live engine independently reproducing any of it.

Catalogue indexing & lookup ~64.4M transitions · 341 MB

Encodingper-transition u32 minute deltas + u8 index; header = magic · kind · first-index
Clockminutes since J2000.0 UT (ΔT baked at build)
Granularityone file per kind — tithi · karaṇa · nakṣatra · yoga · saṅkrānti · ayana · phases · planets' rāśi · conjunctions
Lookupbinary search (partition_point) → O(log n) per query, no scan
Buildrange split across threads → per-chunk grid → merge → sort
Reproducelive engine recomputes any entry from DE441 + TKS ayanāṃśa
One file per kind ⇒ one partition_point per query: the web Pañcāṅga, the eclipse pages and the API all read this same layer, and the live engine reproduces any entry from the kernels.

Try TKS · Pañcāṅga

TKS Pañcāṅga instant catalogue · today · Dehradun

पूर्ण पंचांग →
… loading …

Try TKS · live ephemeris

Engine B · Solar-System dynamics

Configuration

Mode
independent numerical propagation
Integrator
DOPRI5 (adaptive)
Bodies
11 (Sun · 8 planets · Moon · Pluto)
Gravity
Newtonian N-body
Relativity
EIH 1PN toggle
Gravity field
Earth J2–J6 · C22/S22 · Sun J2 toggle
Initial conditions
DE440-derived
Asteroids
offline / optional (16 perturbers)
Validation reference
DE440

Integrator benchmark kept in one place on this page

The 100 / 500 / 1,000-yr comparison of this integrator against DE440 — the raw 11-body Moon included, together with the separate lunar solution it motivates — is in Long-term dynamical validation above: same numbers, one source, reproduce command next to them.
Engine B live run is available in dev mode (?dev=1); Δt ≤ 10 yr. Beyond the TKS Engine-A coverage edge (−13,200 … +17,191) the engine auto-switches to Engine B: the live route is capped at ±20 yr (engineering guardrail), while the offline CLI integrates far beyond (default cap 15,000 yr). For the Moon the divergent N-body phase is replaced by a fitted truncated lunar series (DE441-fit; λ ≈ 3.7–5.2′ over 1,000-yr windows inside its band, ≈11′ at 2,000–4,000 yr, λ ≈ 7′ over the ~2200-yr extrapolation the ±2000-yr catalogue uses). A precomputed ±2000-yr eclipse catalogue (planets from the N-body, Moon from the series) is on /tks-eclipse — a reconstruction; no independent reference exists beyond the edge.
Moon — what is extra: the lunar phase is the first casualty of long spans, so the Moon gets a dedicated path: (i) a fitted truncated lunar series (ELP mean-longitude + ~97 Delaunay terms, amplitudes least-squares fitted to DE441) replaces the divergent N-body Moon beyond the edge — validated λ ≈ 5–7′ / β ≈ 0.2°; (ii) an ELP2000-82B port (IMCCE) as an independent cross-check (0.1″ @ J2000); (iii) topocentric moon-rise/set (Meeus, parallax+refraction) in the Month table; and (iv) the Moon's phases as transitions in the precomputed catalogue.

Udaya-asta · heliacal & eclipses

Aṣṭāṃśa limits · Sūrya-siddhānta ch. 9 layer 4

Moon12°Venus8° / 10°
Mercury12° / 14°Jupiter11°
Mars17°Saturn15°
Each limit is the C of the Sūrya-siddhānta Ch. 9 rule: a graha is udaya (visible) when its iṣṭa-kālāṃśa K — the lagnāntara in asus ÷ 60, which depends on the place (rising times of the signs) and on the graha's ecliptic latitude — is greater than C; otherwise asta. The east/west and retrograde/direct branch gives Venus 8/10°, Mercury 12/14°. There is no plain Sun–planet longitude-gap test anywhere in TKS.
One rule everywhere. The Pañcāṅga, the kuṇḍalī, the graha-ghaṭanā events and this card read the same function, on TKS apparent ecliptic-of-date positions, for the chosen place. Arcus visionis and Schaefer (on TKS Udaya-Asta) are physical visibility criteria for the eye and are a different question from combustion.

Next solar / lunar eclipse layer 3 · 4

Place-dependent solar eclipse (topocentric) and geocentric lunar eclipse. Method: syzygy search in the TKS apparent pipeline → vector geometry; lunar shadow angle = πMoon ± sSun (atmosphere +2%).
Live web scans up to 10 years; larger ranges (within DE441 coverage) are served instantly from the precomputed baseline catalogue (no cap). Beyond-coverage scans use the offline CLI panchanga --eclipse-scan --engine b (Engine B). Detailed per-eclipse PDF is an admin-code export.
Validation · 2026. Lunar: 3 March Total (umag 1.15, P1 08:44 → P4 14:26 UTC) · 28 August Partial (umag 0.93). Solar: 12 August Total (Reykjavik) · 17 February Annular (Antarctica ~70°S, 140°E) — both match known (NASA/Espenak) values. Full-series catalogue now precomputed over the whole DE441 range — see the Eclipse baseline catalogue below.

Eclipse baseline catalogue · 30,189 years

Precomputed · self-contained Engine A · TKS Ephemeris

Solar eclipses71,440
Lunar eclipses72,728
Total events162,200
Coverage−13000 … +17189 · ~30,189 yr
Per eventtime · type · magnitude · Saros · Pañcāṅga · contacts · ΔT · Besselian elements · greatest point + path width
Built once by the engine (independent, reproducible); served instantly from the stored catalogue. Solar local circumstances are evaluated from the stored Besselian elements alone — no ephemeris query.

Query & rebuild latency measured · release · 14 cores

HTTP query · 100 yr17 ms
HTTP query · 500 yr83 ms
HTTP query · 1,000 yr166 ms
HTTP query · 3,000 yr490 ms
CLI reader · 1,000 yr0.31 s
CLI live scan · 1,000 yr~5 s
Full rebuild · 30,189 yr~197 s
Cross-validated against the NASA/GSFC Five Millennium Canon (Espenak & Meeus): Saros 0 mismatches, γ mean 0.0003 R⊕, magnitudes ~0.002, modern greatest-time sub-second.

Eclipse engine · validation

NASA/GSFC Five Millennium Canon full-range cross-validation · −1999…+3000

Solar eclipses compared11,898
Lunar eclipses compared12,064
Saros number0 mismatches
Type0 true mismatches (hybrid/grazing classified separately)
Solar γmean 0.0003 R⊕ · max 0.0022 R⊕
Lunar γmean 0.0003 R⊕ · max 0.0022 R⊕
Solar magnitudemean 0.0022 · max 0.067
Lunar magnitudemean 0.0034 · max 0.008
Modern greatest-eclipse timingsub-second … ~2 s
Solar central-path widthmean ~2.6 km · max ~24 km
NASA 5MC agreement demonstrates computational consistency with the reference catalogue. It is not, by itself, a claim of absolute observational accuracy. Ancient-era differences may reflect different lunar theories and ΔT models.

Pañcāṅga transition catalogues · 30,189 years

Global · self-contained DE441 + TKS ayanāṃśa

Tithi11,201,578
Karaṇa22,403,156
Nakṣatra10,896,492
Yoga11,711,565
Saṅkrānti362,254
Rāśi ingress · 7 bodies6,223,581
Ayana · equinox/solstice120,756
Moon phases1,493,544
Total transitions~64.4M
Place-independent transition instants; any date+place pañcāṅga = transitions ∩ (sunrise..sunset).

Beyond the DE441 edge · ±2000-yr Pañcāṅga Engine B · precomputed

Bands−15200…−13201 · +17192…+19191
Day-rows1,460,970 (2 × 730,485)
Per daytithi · nakṣatra · yoga · karaṇa · pakṣa · māsa · rāśi · sun/moon rise & set
LookupO(1) month slice (warm ~0.09 s)
Engine-B reconstruction beyond the TKS Engine-A coverage edge — the top-form day-pañcāṅga and the month table both read it directly; graha sphuṭa & kundali require the live ephemeris. Planetary longitudes are being added to this layer via an offline Engine-B scan.

Lookup latency /v1/tks/limbs

Warm · limbs + rāśi + ayana + phase~2.7 ms
Cold · first call (loads 315 MB)~0.9 s
Catalogue on disk315 MB
Build · 14 threadsP1 61 min + P2 15 min
O(log n) binary search per limb — no ephemeris scan.

Catalogue composition transition counts · one precomputed layer

Karaṇa
22,403,156
Yoga
11,711,565
Tithi
11,201,578
Nakṣatra
10,896,492
Rāśi ingress · 7 bodies
6,223,581
Moon phases
1,493,544
Saṅkrānti
362,254
Ayana · equinox/solstice
120,756
Each class is a separate O(log n) event stream; any date+place pañcāṅga is a dot-product of the five limb streams. Karaṇa (22.4M) dominates because karaṇa = Δλ/6° (half the tithi interval).

Observational phenomena & tides

Conjunction · opposition · station · retrograde · greatest elongation layer 3

Daily scan of TKS apparent longitudes + bisection/extremum search. Station = zero of daily motion; opposition = elongation 180° (outer planets); greatest elongation = inner planets.
Visibility · arcus visionis + Schaefer. arcus visionis (Ptolemaic solar-elongation limit): Mercury 10° · Venus 5° · Mars 11.5° · Jupiter 10° · Saturn 13°. Schaefer photometric: planet magnitude (distance + phase + extinction) vs limiting magnitude from sky surface brightness (Crumey 2014); topocentric altitude + solar depression. Schaefer twilight approximation (constants from literature); full validation needs observational data.

Tidal astronomy force + equilibrium + external model

ApproachStatus
Tide-generating force a ∝ 2GM·R/d³live · Moon §14
Equilibrium tide η = A·(3cos²z − 1)/2live · Moon §14
External marine model (Mumbai)§14b · Open-Meteo Marine / FES
Own ocean modelling (bathymetry, resonance)planned / offline
Equilibrium tide A = (GM_body/GM_earth)·R·(R/d)³ is a theoretical fluid-Earth (no continents) response. Actual local sea level also needs bathymetry + ocean dynamics — shown for Mumbai (§14b) from an external model with a 48-h tide chart; equilibrium range ≈ 0.75 m vs actual Mumbai range ≈ 2.3 m. Equilibrium tide ≠ actual local sea level. Classical/shāstrīya orbs and the equilibrium tide are theoretical; the external model is used only for real-world comparison.

Validation

Reference states · SPK own checks

CheckResult
TKS SPK vs jplephem (DE421 · DE440 · DE441)position ≤ 1.1 m · velocity ≈ 10⁻¹⁰ km/s
SPK figures are numerical reproduction relative to a reference evaluator — not “reference-kernel accuracy”.

Apparent · time · sidereal own checks

CheckResult
Apparent astronomy vs SkyfieldICRF RA/Dec ≈ 0.046″ · ecliptic λ/β ≈ 0.047″
Time scale vs xalentests 8/8 · Δ = 0 s
Numerical precision ≠ physical accuracy ≠ observational uncertainty.

Performance · release benchmarks

Eclipse scan (local visibility) release · std::thread::scope

1 year0.02 s
20 years0.08 s~690 % CPU
200 years (CE 2026–2226)0.64 s~760 % CPU
200 years BCE (3139 BCE, Ujjain)0.81 s~770 % CPU
Two-pass filter (Pass-1 syzygy root-find; Pass-2 local only for |β_moon| < 1.6°) and the scan window split across up to 8 threads in one request. Kernel reads: one pread per record + a thread-local decoded-record cache (the fix that removed a syscall storm — system time 129 s → 0.05 s for 200 yr). CPU > 100 % confirms real multi-core use.

Server behaviour

Thread-per-connection server: a slow scan does not serialise other requests (a 1 yr eclipse scan long-polls nothing else). Engine B (N-body) is heavier by nature — the live route is capped at ±20 yr near the DE edge, while the offline CLI integrates far beyond. Endpoint numbers are measured, not assumed: see the latency table in the matrices below.

Capability · coverage matrices

Capability & execution

Language & safetyNative Rust · zero-FFI SPK/DAF evaluator
Reference statesDE440 / DE441 (independent reader)
Live deep-time (in DE coverage)−13,200 … +17,191 (DE441 kernel · 30,390 yr), O(1)/query
Beyond DE coverageEngine B N-body · live ±20 yr near-edge · offline batch can extend to millions of years
Stellar & GalacticEngine C — catalogued 6D states · six-model Milky-Way potential · periapsis + full-orbit impact tests
Million-year calendarEngine B offline reconstruction — N-body batch runnable beyond 1,000,000 yr; uncertainty grows. Guardrail: --max-years (default 15,000)
ConcurrencyNative multi-thread (std::thread::scope), measured 690–770 % CPU
Dynamics11-body N-body · DOPRI5 · EIH 1PN · J2–J6 · C22/S22
Validation (own)SPK ≤ 1.1 m · ≈ 0.047″ vs Skyfield · Δ = 0 s vs xalen
Only this engine is specified. Beyond DE coverage, Engine B is an offline reconstruction that can extend to millions of years under a configurable guardrail; long-span output carries a growing uncertainty.

Computed quantities (implemented)

BodiesSun · Moon · Mercury · Venus · Mars · Jupiter · Saturn · Uranus · Neptune · Earth · Pluto (11 integrated)
Pointsmean & true lunar nodes (Rāhu/Ketu) · ascendant (lagna)
UpagrahasAprakāśa (Dhūma · Vyatīpāta · Pariveṣa · Indracāpa · Upaketu) · Kālavelā (Gulika/Māndi · Kāla · Mṛtyu · Ardhaprahara · Yamaghaṇṭaka)
Pañcāṅgatithi · vāra · nakṣatra · yoga · karaṇa · rāśi · saṅkrānti
MuhūrtaRāhu-kāl · Yamaghaṇṭa · Gulika · Abhijit · Chaughadiya · Bhadrā
Eclipsesolar / lunar · local circumstances · full 30,189-yr baseline catalogue (144,168 events) + live scan
Heliacaludaya / asta per planet · Agastya (Canopus)
SiderealTKS Ayanāṃśa (true Chitrā) · Lahiri · Sūrya-siddhānta
Stellar (Engine C)per-star 6D state · closest-approach epoch & periapsis · Galactic correction vs the straight line
Encounter catalogue162 unique stars · 164 rows · 141 determined · 27 within 1 pc (±8 Myr)

Performance & latency matrix measured · release build · two hosts

Eclipse scan (Engine A)

SpanComputeCPU
1 year0.02 s—
20 years0.08 s~690 %
200 years (CE)0.64 s~760 %
200 years BCE (3139 BCE, Ujjain)0.81 s~770 %
8-thread sweet spot; CPU > 100 % confirms genuine multi-core use. Totals identical across builds.

Endpoint latency Engine A · one request · warm

Endpoint14-core host1-vCPU server
/v1/tks/ephemeris2.1 ms21.7 ms
/v1/tks/tithi1.5 ms3.2 ms
/v1/tks/heliacal3.7 ms9.6 ms
/v1/tks/sun-year8.9 ms19.4 ms
/v1/tks/eclipses 1 yr scan90.0 ms771.5 ms
/v1/tks/encounters Engine C229.2 ms321.7 ms
14-core column re-measured 2026-10-08 (median of 9 warm requests); 1-vCPU column is the earlier 2026-09-30 measurement (median of 5), not re-run. Median through curl -w %{time_total} against 127.0.0.1 (no network across the measurement), release build — reproduce with scripts/measure_latency.sh, which writes data/latency_measurements.json (the only source for this table, and the check that keeps these cells honest). Eclipse-scan timing varies ≈ 90–102 ms between runs; the committed build of the previous day gave the same on this machine, so the older 44 ms / 136 ms / 7 ms figures for eclipses / encounters / sun-year were not reproducible today. The ephemeris route is ≈ 5× faster than before (per-epoch reduction, TKS-EPH-2). a 1-vCPU host is noisy between runs (ephemeris read 29.0 ms before the deploy and 21.7 ms after), and its eclipse/encounter rows cost more because the scan is multi-threaded and it has one core. Engine C's row is the whole 162-star catalogue with a per-star Galactic integration and a 386 KB response — the on-demand cost, not a cached count. After the SPK fix: one pread per record, segment directory cached, thread-local decoded-record cache.

Domains · coverage matrices

Engine A vs Engine B vs Engine C

AspectEngine A — SPK/DAFEngine B — N-bodyEngine C — stellar & Galactic
SourceTKS reference states (independent reader)11-body integration from a DE epochcatalogued 6D stellar states (162 stars) + six Milky-Way potentials
MethodChebyshev record evaluation, O(1)/queryDOPRI5 · EIH 1PN · J2–J6 · C22/S22Galactic-field integration · exact two-body periapsis aim
Validity−13,200 … +17,191 (DE441 kernel)live ±20 yr near DE edge · offline to millions of years±8 Myr around the catalogue epoch · per star, limited by its 6D measurement
Speed≈ 8 ms/request · eclipse 1 yr 0.02 seclipse 1 yr ≈ 0.35 s (offline)≈ 137 ms for the whole catalogue, on demand
Best forEveryday ephemeris & Pañcāṅga in coverageOutside coverage, deep time, self-testsEncounter epochs, Oort-cloud impulse, Galactic corrections
UncertaintyBounded by the reference-kernel fitGrows with span (long-horizon reconstruction)Dominated by the input 6D state (parallax / radial-velocity revision)
Three engines, one framework: Engine A is the TKS reference ephemeris, Engine B reconstructs it (and extends it) where no reference exists, Engine C answers a different question — what the Solar System's neighbours do — from external 6D catalogues. Its controls are limit tests, not accuracy claims.

Coverage & precision

DE441 reference coverage (Engine A)−13,200-05-06 … +17,191-03-15 · 30,390 yr
Eclipse baseline catalogue−13,000 … +17,189 · 30,189 yr
Pañcāṅga transition catalogues−13,000 … +17,189 · 30,189 yr
Engine B live band±20 yr near DE edge
Engine-B reconstruction> 10⁶ yr experimental
Engine C catalogue window±8 Myr · 164 rows
SPK reproduction≤ 1.1 m
Apparent vs Skyfield≈ 0.047″
Time scale vs xalenΔ = 0 s
TKS Ayanāṃśa vs Lahiri≈ 57.7″ (definition)
Numerical precision ≠ physical accuracy ≠ observational uncertainty. Kernel coverage is read from the DE kernels themselves — cargo run --release --example coverage_probe regenerates data/kernel_coverage.json, and tests/de441_reader.rs pins that file to the kernel.

Engine C · stellar & Galactic coverage

Catalogue162 unique stars · 164 rows
Distance determined141 (parallax S/N ≥ 3)
Encounter class < 1 pc27 (in ±8 Myr)
Galactic potentials bracketed6 (incl. MW2014)
Control · pair vs Kepler hyperbolaΔ = 3 × 10⁻⁹
Control · interaction off vs straight lineΔ = 1.7 × 10⁻⁶
Tide vs full orbitsmedian 0.356 % · RMS 9.59 % · max 72 %
Literature anchorsGJ 710 10,533 AU · HD 7977 2,312 AU
Measurements, with their controls, are in docs/tks-sensitivity-paper.md (§3.4 exact controls, §5 statistics). The controls are idealised limit tests — where a closed-form answer exists the model is checked against it; they say nothing about observational accuracy. Over ±10⁵ yr the limiting uncertainty is the input 6D state itself (DR2→EDR3 revisions), not the integrator.

Sidereal & bodies

Ayanāṃśa comparison

SystemValueΔ vs TKSZero-epoch
TKS Ayanāṃśa (dynamic Chitrāpakṣa) computed24.216901°baseline≈ 285 CE
Lahiri (ICRC-1956) our model24.232929°+57.7″285 CE†
KP / KPNA‡≈ 24.238–24.242°+~1.3–1.5′291 CE‡
B.V. Raman‡≈ 22.79–22.82°−~1.4°389 CE‡
TKS & Lahiri values are computed by this engine. †Lahiri's epoch and the ‡KP / Raman rows are third-party estimates, unverified here (shown for orientation). TKS Ayanāṃśa = Spicā (HIP 65474) at nirayana 180° via ICRS + proper motion. Zero-epoch = the year a system assumes sāyana λ = nirayana λ.

Bodies & points

Classical bodiesSun · Moon · Mercury · Venus · Mars · Jupiter · Saturn
ExtraEarth · Pluto
Nodesmean + true Rāhu / Ketu
UpagrahasDhūma · Vyatīpāta · Pariveṣa · Indracāpa · Upaketu · Gulika/Māndi · Kāla · Mṛtyu · Ardhaprahara · Yamaghaṇṭaka
Lagnaascendant + whole-sign bhāvas
StarsSpicā (ayanāṃśa reference) · named-star catalogue

Error budget & deep-time

Sources

SPK evaluationvalidated
Time conversionvalidated
Light-timeiterative
Aberrationincluded (relativistic)
Solar deflectionincluded
PrecessionIAU 2006
NutationIAU 2000B
ΔTmodel-dependent
UT1observational
Ayanāṃśamodel-dependent
Lunar dynamics (Engine B)engine-dependent
Numerical precision ≠ physical accuracy ≠ observational uncertainty. Our SPK evaluator matches the reference evaluator numerically (≤1 m), but that does not prove the positions are physically identical everywhere — over long spans model/observational uncertainty dominates.

Deep-time ephemeris proven

DE441 reference range: −13,200-05-06 … +17,191-03-15 · 30,390 yr. Long-term propagation of Engine B (full 11-body, tight tolerance) — diagnostics: Δλ · Δβ · Δr · Δv · energy/angular-momentum drift (with Moon). Large Δt is slow (faster in release); 1 kyr–1 Myr = offline batch (experimental).
Disclaimer: deep-time results are dynamical reconstructions, not equivalent to modern observational ephemeris accuracy.
Deep-time live run is available in dev mode (?dev=1); Δt ≤ 10 yr. Larger spans run as an offline batch (CLI / release). Deep-time results are reconstructions, not equivalent to modern observational ephemeris accuracy — see σλ(t) below.
Śāstra / textual reconstruction planned — input: epoch · planet · textual longitude · reference system · ayanāṃśa · calendar interpretation; output: source vs TKS Δλ (kala/vikala). This will distinguish TKS from the general Pañcāṅga site.

Long-term uncertainty · σλ(t)

Engine-B initial-condition Monte-Carlo — σλ(t), arcsec 10 members · σp = 1 km · σv = 1e-6 km/s · offline

Δt (yr)Earth/EMBMercuryVenusMarsJupiterSaturnUranusNeptunePluto
101.49.71.70.780.300.100.030.010.01
10013.749.817.79.42.11.10.570.540.28
10001374201768823147.53.95.4
10000132170271778840274125703920
Sensitivity to the initial state only (model error excluded); σλ grows ≈ linearly in time and scales linearly with the assumed σ. Reproduce: cargo run --release -p tks-ephemeris --example uncertainty (env TKS_MEMBERS, TKS_SKIP_MC).

Engine-B vs DE441 model divergence — |Δλ|, arcsec offline · planets + EMB

Δt (yr)Earth/EMBMercuryVenusMarsJupiterSaturnUranusNeptunePluto
100161010.50.020.010.000.010.040.02
10001668557530.40.090.040.150.580.51
100001777510554466.40.090.601.31.80.63
True model error of the simplified N-body (point masses + 1PN EIH + J2–J6 + C22/S22; no asteroids) against DE441. Threshold 5′ = 300″: the outer planets (Mars through Pluto) stay within at 10 kyr; Mercury, Venus, Earth exceed 5′ by ≈1–2 kyr (values wrap past ~1°). DE440 and DE441 agree to <0.01″ within their overlap, so their difference is not a usable uncertainty proxy.

Provenance & reproducibility

TKS Ephemeris · v0.1 · Engine A (reference) + Engine B (dynamics)
Kernel: dynamic (active kernel below) · Frame: ICRF · Origin: barycentric/geocentric · Reduction: IAU 2006 / IAU 2000B · Ayanāṃśa: Lahiri (ICRC 1956) · Sidereal: true-Spica (Chitra).
Author: Acharya Rajesh Benjwal (Tantrakul) · TKS-EPH-2 core: commercial licence (evaluation, developer, production, enterprise) · catalogues, engine and API: TKS-API v1.0 (/license/tks) · whitepaper: TKS_WHITEPAPER.md.
संस्करणः bin-1793859971