<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: The Unholy Indian Magician</title>
    <description>The latest articles on DEV Community by The Unholy Indian Magician (@the_unholyindianmagicia).</description>
    <link>https://dev.to/the_unholyindianmagicia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3997105%2F56cf4b52-9e1b-418c-b8d4-3dfdcb505ff7.png</url>
      <title>DEV Community: The Unholy Indian Magician</title>
      <link>https://dev.to/the_unholyindianmagicia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/the_unholyindianmagicia"/>
    <language>en</language>
    <item>
      <title>Building a 100% Bhāratīya ephemeris from classical texts — and benchmarking it against NASA/JPL Horizons</title>
      <dc:creator>The Unholy Indian Magician</dc:creator>
      <pubDate>Mon, 22 Jun 2026 14:35:13 +0000</pubDate>
      <link>https://dev.to/the_unholyindianmagicia/building-a-100-bharatiya-ephemeris-from-classical-texts-and-benchmarking-it-against-nasajpl-5b5f</link>
      <guid>https://dev.to/the_unholyindianmagicia/building-a-100-bharatiya-ephemeris-from-classical-texts-and-benchmarking-it-against-nasajpl-5b5f</guid>
      <description>&lt;p&gt;Most "Indian" astrology apps quietly run on the &lt;strong&gt;Swiss Ephemeris&lt;/strong&gt; — a Western-built library under AGPL/commercial licensing. It's excellent (sub-arcsecond, and more precise than what I'll describe below), but it means the trust chain of a supposedly Bhāratīya product ends at a foreign binary. We wanted to know: &lt;strong&gt;what does sovereignty actually cost in accuracy&lt;/strong&gt; if you compute the sky from classical Indian texts instead?&lt;/p&gt;

&lt;p&gt;This is the honest write-up of building &lt;strong&gt;Bharat Ephemeris&lt;/strong&gt; from scratch and benchmarking it against NASA/JPL Horizons — including where we lose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;The pipeline is three classical layers, no foreign ephemeris in the chain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Mean longitudes — Sūrya-Siddhānta.&lt;/strong&gt; Each body's mean position is propagated from the Siddhāntic mean motions (revolutions per Mahāyuga → daily motion). This is the deterministic backbone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Corrections — Kerala-school Tantrasaṅgraha.&lt;/strong&gt; On top of the mean position we apply the &lt;strong&gt;manda&lt;/strong&gt; correction (the equation of centre — orbital eccentricity) and the &lt;strong&gt;śīghra&lt;/strong&gt; correction (the heliocentric→geocentric transformation that produces retrograde loops). The Kerala school's formulations are remarkably close to the modern two-body solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Sidereal frame — Lahiri ayanāṃśa.&lt;/strong&gt; Finally we subtract the Lahiri ayanāṃśa (the Government-of-India Rāṣṭrīya Pañcāṅga standard) to land in the sidereal zodiac Vedic practitioners actually use.&lt;/p&gt;

&lt;p&gt;No Swiss Ephemeris, no JPL kernel at runtime — just the classical math, implemented and tested.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bake-off: validation against NASA/JPL Horizons
&lt;/h2&gt;

&lt;p&gt;A self-built engine is worthless if you can't say how wrong it is. So we validate against &lt;strong&gt;NASA/JPL Horizons&lt;/strong&gt; — the modern ground truth — over a date grid, and report the &lt;strong&gt;p95 error&lt;/strong&gt; per body (95th-percentile, not a cherry-picked best case):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sun:&lt;/strong&gt; within &lt;strong&gt;~0.1 arcminutes (p95)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Moon:&lt;/strong&gt; within &lt;strong&gt;~1 arcminute (p95)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledging the tradeoff (where we lose)
&lt;/h2&gt;

&lt;p&gt;Let's be direct: &lt;strong&gt;Swiss Ephemeris is more precise than we are.&lt;/strong&gt; It's sub-arcsecond; our Moon sits around an arcminute. If raw precision were the only axis, you'd pick Swiss Ephemeris every time.&lt;/p&gt;

&lt;p&gt;What ~1 arcminute buys instead is a &lt;strong&gt;fully auditable, fully self-built stack&lt;/strong&gt; — every number traceable to a classical text and our own code, with no third-party binary you have to trust on faith. For a product whose entire claim is &lt;em&gt;Bhāratīya provenance&lt;/em&gt;, an arcminute that you can fully audit beats a hidden arcsecond you can't. That's the honest tradeoff, stated up front rather than buried.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why publish error bars at all?
&lt;/h2&gt;

&lt;p&gt;Because a number you can audit is worth more than a marketing adjective. "Most accurate" is unfalsifiable; "&lt;strong&gt;Sun ~0.1′, Moon ~1′ vs NASA-JPL, p95&lt;/strong&gt;" is a claim you can check. Publishing the error bar is the difference between &lt;em&gt;asking&lt;/em&gt; for trust and &lt;em&gt;earning&lt;/em&gt; it — and it's the only honest way to compete with a library that genuinely is more precise than you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;If you want to see it, the live bake-off and a free chart are here: &lt;strong&gt;&lt;a href="https://bharatephemeris.com/accuracy?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=sovereign-engine" rel="noopener noreferrer"&gt;bharatephemeris.com/accuracy&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The mission is narrow and honest: a 100% Bhāratīya engine with published error bars. We locate where the sky actually is — we don't predict doom, and we don't sell remedies or gemstones.&lt;/p&gt;

</description>
      <category>astronomy</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
