\documentclass[10pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\setmainfont{Source Serif Pro}
\setsansfont{Source Sans Pro}
\setmonofont{Source Code Pro}
\usepackage{microtype}
\usepackage[a4paper,inner=23mm,outer=19mm,top=21mm,bottom=24mm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{booktabs,longtable,array,tabularx}
\usepackage[table]{xcolor}
\usepackage{hyperref}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{siunitx}
\definecolor{ephblue}{HTML}{1F4D78}
\definecolor{ephlight}{HTML}{E8EEF5}
\definecolor{ephstripe}{HTML}{F4F8FB}
\hypersetup{colorlinks=true,linkcolor=ephblue,urlcolor=ephblue,
  pdftitle={Numerische Ephemeridenrechnung},
  pdfauthor={Jost Jahn},
  pdfsubject={Mathematische Beschreibung und sprachübergreifende Validierung}}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\small\color{ephblue} Numerische Ephemeridenrechnung}
\fancyhead[RE,LO]{\small\color{gray} Amrum Software}
\fancyfoot[C]{\thepage}
\setlength{\headheight}{14pt}
\setlist{nosep,leftmargin=5mm}
\renewcommand{\arraystretch}{1.18}
\setlength{\tabcolsep}{5pt}
\arrayrulecolor{ephblue!35}
\newcommand{\AU}{\mathrm{AE}}
\newcommand{\dd}{\mathrm{d}}
\newcommand{\vect}[1]{\boldsymbol{#1}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\thead}[1]{\color{white}\bfseries #1}
\title{\color{ephblue}\bfseries Numerische Ephemeridenrechnung\\[2mm]
\large Mathematisches Verfahren, exakte Koeffizienten und sprachübergreifende Validierung}
\author{Jost Jahn}
\date{25. Juli 2026 \quad Version 0.5.3}

\begin{document}
\maketitle
\begin{abstract}
Der Artikel beschreibt einen eigenständigen Rechenkern für scheinbare
topozentrische Ephemeriden von Asteroiden, Kometen und interstellaren Objekten.
Aus oskulierenden Elementen wird für elliptische, parabolische und hyperbolische
Bahnen ein J2000-Zustand erzeugt. Ein adaptives Dormand--Prince-Verfahren
integriert Sonne, Relativität, Planeten, Erde und Mond, Erd-$J_2$, optional
16 massereiche Asteroiden sowie Marsden-$A_1/A_2/A_3$. Alle im Quellcode
verwendeten Polynome, trigonometrischen Reihen, Konstanten und
Runge--Kutta-Koeffizienten werden numerisch vollständig angegeben.
Zwanzig eingefrorene JPL-Horizons-Zeilen prüfen sechs Extremobjekte in
49 eigenständigen Zielprogrammen.
\end{abstract}
\tableofcontents
\newpage

\section{Fachbegriffe und Symbole}
Alle für die Rechnung erforderlichen astronomischen und numerischen
Fachbegriffe werden in diesem Abschnitt definiert. Besonders wichtige Begriffe
werden bei ihrer ersten Verwendung zusätzlich erläutert. Damit bleibt der
Artikel auch ohne Spezialkenntnisse in numerischer Himmelsmechanik lesbar.

\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{0.25\linewidth}p{0.68\linewidth}@{}}
\rowcolor{ephblue}\thead{Fachbegriff} & \thead{Bedeutung in diesem Artikel}\\
\endfirsthead
\rowcolor{ephblue}\thead{Fachbegriff} & \thead{Bedeutung in diesem Artikel}\\
\endhead
Ephemeride & Vorausberechnete Folge von Himmelspositionen und ergänzenden Größen für festgelegte Zeitpunkte und einen Beobachtungsort. \\
scheinbar & Bezeichnet hier die Richtung nach Lichtlaufzeit, Erdrotation, Nutation und Präzession; atmosphärische Refraktion ist nicht Teil dieses Rechenkerns. \\
topozentrisch & Auf den wirklichen Standort des Beobachters auf oder nahe der Erdoberfläche bezogen, nicht auf den Erdmittelpunkt. \\
geozentrisch / heliozentrisch & Geozentrisch bedeutet auf den Erdmittelpunkt, heliozentrisch auf den Sonnenmittelpunkt bezogen. \\
Baryzentrum & Gemeinsamer Massenschwerpunkt mehrerer Körper; EMB bezeichnet das Erde-Mond-Baryzentrum. \\
oskulierende Bahnelemente & Sechs Elemente einer momentanen Keplerbahn, die Ort und Geschwindigkeit der tatsächlich gestörten Bahn an einer Epoche berührt. \\
Epoche & Zeitpunkt, für den Bahnelemente oder ein Zustandsvektor gelten. \\
Kegelschnitt & Ellipse, Parabel oder Hyperbel; die Exzentrizität e unterscheidet die drei Bahnformen. \\
Exzentrizität e & Dimensionsloser Formparameter: e<1 Ellipse, e=1 Parabel und e>1 Hyperbel. \\
q, Tp, i, $\Omega$, $\omega$ & Periheldistanz, Perihelzeit, Bahnneigung, Länge des aufsteigenden Knotens und Argument des Perihels. \\
M, E, H, $\nu$ & Mittlere, exzentrische, hyperbolische und wahre Anomalie; Winkel beziehungsweise Hilfsgröße für die Position auf der Bahn. \\
J2000 & In diesem Kern die feste äquatoriale Bezugsorientierung zur Standardepoche JD 2451545.0. \\
AE & Astronomische Einheit; exakt 149597870,7 Kilometer. \\
JD & Julianisches Datum, eine fortlaufende astronomische Tageszählung. \\
UTC / TAI / TDB & Koordinierte Weltzeit, Internationale Atomzeit und baryzentrische dynamische Zeit; UTC enthält Schaltsekunden, TDB dient der Dynamik. \\
Schaltsekunde & Ganzzahlige Korrektur, die UTC an die ungleichmäßige Erdrotation bindet, während TAI gleichmäßig fortläuft. \\
Gravitationsparameter μ & Produkt G$\cdot$M aus Gravitationskonstante und Körpermasse. $\mu_{\odot}$ bezeichnet den Sonnenwert, $\mu_E$ den Erdwert. \\
Massenverhältnis $\eta_b$ & Verhältnis Mb/$M_{\odot}$ eines Störkörpers zur Sonne; gleichbedeutend mit $\mu_b$/$\mu_{\odot}$. \\
Störkörper & Körper, dessen Gravitation die reine Zweikörperbahn zusätzlich beschleunigt. \\
direkter und indirekter Term & Direkt wirkt der Störkörper auf das Objekt; indirekt wird die gleichzeitige Beschleunigung des heliozentrischen Ursprungs abgezogen. \\
N16 & Optionaler Satz der 16 massereichsten Asteroiden, deren Störungen zusätzlich integriert werden. \\
kubische Hermite-Interpolation & Polynominterpolation dritten Grades, die an beiden Tabellenknoten Position und Geschwindigkeit exakt übernimmt. \\
Little-Endian float64 & Binärformat mit dem niederwertigsten Byte zuerst und 64-Bit-Gleitkommazahlen nach IEEE 754. \\
Runge-Kutta-Verfahren & Einschrittverfahren, das mehrere Beschleunigungsauswertungen kombiniert, um den Zustand über einen Zeitschritt fortzuschreiben. \\
eingebettetes Verfahren & Zwei Runge-Kutta-Lösungen verschiedener Ordnung benutzen dieselben Stufen; ihre Differenz schätzt den lokalen Fehler. \\
Dormand-Prince 5(4) & Eingebettetes Runge-Kutta-Paar fünfter und vierter Ordnung mit sieben Stufen. \\
Butcher-Tafel & Tabellarische Anordnung der Runge-Kutta-Koeffizienten ci, aij und bi; sie legt Stufenzeitpunkte, Zwischenzustände und Endgewichte vollständig fest. \\
lokaler Fehler & Geschätzter Fehler eines einzelnen Integrationsschritts, hier aus der Differenz der Lösungen fünfter und vierter Ordnung. \\
adaptive Schrittweite & Automatische Verkleinerung oder Vergrößerung des Zeitschritts anhand der normierten Fehlerschätzung. \\
RMS & Quadratischer Mittelwert; hier die Wurzel aus dem Mittel der sechs quadrierten, skalierten Komponentenfehler. \\
clamp & Begrenzung eines Zahlenwerts auf ein geschlossenes Minimum-Maximum-Intervall. \\
Lichtlaufzeit & Zeit, die das Licht vom Objekt zum Beobachter benötigt; sie verschiebt die ausgewertete Emissionszeit. \\
Präzession / Nutation & Langsame säkulare beziehungsweise kürzerperiodische Änderung der Orientierung der Erdachse. \\
GMST & Mittlere Greenwich-Sternzeit, also der aus UTC abgeleitete Rotationswinkel der Erde relativ zum mittleren Himmelsbezug. \\
Erd-J2 & Führender Koeffizient der Abplattung des Erdschwerefelds gegenüber einer idealen Punktmasse. \\
Marsden A1/A2/A3 & Empirische nichtgravitative Beschleunigungen eines Kometen in radialer, transversaler und normaler Richtung. \\
RA / Deklination & Rektaszension und Deklination; das äquatoriale Koordinatenpaar der scheinbaren Himmelsrichtung. \\
MPC-$\rho$-Faktoren & Vom Minor Planet Center verwendete dimensionslose Stationsfaktoren für Abstand von Erdachse und Äquatorebene. \\
Bogensekunde & 1/3600 Grad; das Zeichen $''$ kennzeichnet diese Winkeleinheit. \\
Referenzephemeride / Residuum & Vergleichsposition aus JPL Horizons beziehungsweise der verbleibende sphärische Winkelabstand zur Kernrechnung. \\
Kovarianzfortpflanzung & Fortrechnung statistischer Unsicherheiten und Korrelationen einer Bahnlösung; sie gehört nicht zum dokumentierten Nominalkern. \\
Abnahmetest & Festgelegter Vergleich, dessen Grenzwert ein Port für die Freigabe einhalten muss. \\
\end{longtable}

\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{0.19\linewidth}p{0.46\linewidth}p{0.25\linewidth}@{}}
\rowcolor{ephblue}\thead{Symbol} & \thead{Bedeutung} & \thead{Wert oder Einheit}\\
\endfirsthead
\rowcolor{ephblue}\thead{Symbol} & \thead{Bedeutung} & \thead{Wert oder Einheit}\\
\endhead
$\mu_{\odot}$ = G$\cdot$$M_{\odot}$ & Heliozentrischer Gravitationsparameter der Sonne & 0.0002959122082855911 AE$^3$/Tag$^2$ \\
$\mu_E$ = G$\cdot$ME & Geozentrischer Gravitationsparameter der Erde & 8.887692445125148326e-10 AE$^3$/Tag$^2$ \\
$\mu_{\mathrm{Mond}}$ = G$\cdot$MMond & Gravitationsparameter des Mondes & 1.09318946230584718e-11 AE$^3$/Tag$^2$ \\
$\eta_b$ = $\mu_b$/$\mu_{\odot}$ & Massenverhältnis eines Störkörpers b zur Sonne & dimensionslos \\
r, v, a & Orts-, Geschwindigkeits- und Beschleunigungsvektor & AE; AE/Tag; AE/Tag$^2$ \\
t0, Tp, $\Delta$ & Elementepoche, Perihelzeit und Differenz t0--Tp & JD beziehungsweise Tage \\
q, a, p, e & Periheldistanz, große Halbachse, Bahnparameter und Exzentrizität & AE beziehungsweise dimensionslos \\
M, E, H, $\nu$ & Mittlere, exzentrische, hyperbolische und wahre Anomalie & Radiant \\
$\Omega$, $\omega$, i & Knotenlänge, Perihelargument und Inklination & Grad bei Eingabe, intern Radiant \\
c & Lichtgeschwindigkeit & 173.144632674240 AE/Tag \\
$\rho$ & Topozentrischer Objektvektor beziehungsweise im J2-Abschnitt Erdabstand & AE \\
J2, RE & Erdabplattungskoeffizient und Äquatorradius & dimensionslos beziehungsweise AE \\
A1, A2, A3 & Nichtgravitative Marsden-Parameter & AE/Tag$^2$ \\
T & Julianische Jahrhunderte seit J2000 & dimensionslos \\
\end{longtable}

\section{Koordinaten, Zeitskalen und Konstanten}
Der Zustand
\[
  \vect y=(x,y,z,v_x,v_y,v_z)^\mathsf T
\]
ist heliozentrisch, rechtshändig und äquatorial J2000. Positionen stehen in
astronomischen Einheiten, Geschwindigkeiten in $\AU/\mathrm{Tag}$ und
Beschleunigungen in $\AU/\mathrm{Tag}^2$. Die öffentliche Beobachtungszeit
ist UTC, die dynamische Integration verwendet TDB. Interne Winkel sind Radiant.

\noindent
Das Symbol $\mu$ bezeichnet allgemein den Gravitationsparameter
$\mu=G\,M$, also das Produkt aus Gravitationskonstante und Masse. Dieser
Artikel schreibt stets
\[
 \mu_\odot=G\,M_\odot
 =0.0002959122082855911\,\AU^3/\mathrm{Tag}^2
\]
für die Sonne und
\[
 \mu_E=G\,M_E
 =8.887692445125148326\cdot10^{-10}\,\AU^3/\mathrm{Tag}^2
\]
für die Erde. Ein Störkörper $b$ erhält das Massenverhältnis
$\eta_b=\mu_b/\mu_\odot=M_b/M_\odot$. Damit ist jedes später verwendete
$\mu$ eindeutig einem Körper zugeordnet.

\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{0.28\linewidth}p{0.44\linewidth}p{0.18\linewidth}@{}}
\rowcolor{ephblue}\thead{Größe} & \thead{Exakter Wert} & \thead{Einheit}\\
\endfirsthead
\rowcolor{ephblue}\thead{Größe} & \thead{Exakter Wert} & \thead{Einheit}\\
\endhead
$\pi$ & 3.141592653589793238462643383279502884 & dimensionslos \\
AE & 149597870.7 & km \\
$\mu_{\odot}$ = G$\cdot$$M_{\odot}$ & 0.0002959122082855911 & AE$^3$/Tag$^2$ \\
$\mu_E$ = G$\cdot$ME & 8.887692445125148326e-10 & AE$^3$/Tag$^2$ \\
$\mu_{\mathrm{Mond}}$ = G$\cdot$MMond & 1.09318946230584718e-11 & AE$^3$/Tag$^2$ \\
Lichtgeschwindigkeit & 173.144632674240 & AE/Tag \\
Lichtlaufzeit & 0.0057755183 & Tag/AE \\
Masse Erde/Sonne & 3.0034896149156e-6 & dimensionslos \\
Masse Mond/Sonne & 3.6943033497651e-8 & dimensionslos \\
Erdradius & 6378.1363 / 149597870.7 & AE \\
J2 Erde & 1.08262668e-3 & dimensionslos \\
Schiefe J2000 & 84381.448 & Bogensekunden \\
\end{longtable}

\section{Anfangszustand aus oskulierenden Elementen}
Oskulierende Bahnelemente\footnote{Sie beschreiben die momentane Keplerbahn,
die an der Elementepoche dieselbe Position und Geschwindigkeit wie die
tatsächlich gestörte Bahn besitzt.} sind Epoche $t_0$, Exzentrizität $e$,
Periheldistanz $q$,
Perihelzeit $T_p$, Knoten $\Omega$, Perihelargument $\omega$ und Inklination
$i$. Es sei $\Delta=t_0-T_p$ und
$\mu_\odot=0.0002959122082855911\,\AU^3/\mathrm{Tag}^2$.

\subsection{Elliptischer Zweig}
Für $e<1-10^{-8}$ gilt
\begin{align}
 a &= \frac{q}{1-e},&
 n &= \sqrt{\frac{\mu_\odot}{a^3}},&
 M &= \operatorname{norm}_{[-\pi,\pi)}(n\Delta).
\end{align}
Der Startwert lautet $E_0=M$ für $e<0.8$, andernfalls
$E_0=\operatorname{sign}(M)\pi$. Newtons Iteration ist
\[
 E_{k+1}=E_k-\frac{E_k-e\sin E_k-M}{1-e\cos E_k}.
\]
Sie endet bei einer Korrektur kleiner als $2\cdot10^{-14}$ oder nach
80 Schritten. Die wahre Anomalie ist
\[
 \nu=2\operatorname{atan2}\!\left(
 \sqrt{1+e}\sin\frac{E}{2},
 \sqrt{1-e}\cos\frac{E}{2}\right).
\]

\subsection{Hyperbolischer Zweig}
Für $e>1+10^{-8}$ wird $a=q/(e-1)$ positiv als Betragsgröße geführt:
\begin{align}
 M &= \sqrt{\frac{\mu_\odot}{a^3}}\Delta,&
 H_0 &= \operatorname{asinh}\left(\frac{M}{e}\right),\\
 H_{k+1} &= H_k-\frac{e\sinh H_k-H_k-M}{e\cosh H_k-1}.
\end{align}
Abbruchkriterium und Iterationsgrenze entsprechen dem elliptischen Zweig.
\[
 \nu=2\operatorname{atan2}\!\left(
 \sqrt{e+1}\sinh\frac{H}{2},
 \sqrt{e-1}\cosh\frac{H}{2}\right).
\]

\subsection{Parabel und nahezu parabolischer Grenzbereich}
Für $|e-1|\le 10^{-8}$ wird die Barker-Gleichung ohne Division durch
$1-e$ oder $e-1$ ausgewertet:
\begin{align}
 s &= \sqrt{\frac{2q^3}{\mu_\odot}},&
 B &= \frac{\Delta}{s},&
 D &= 2\sinh\!\left(\frac{\operatorname{asinh}(1.5B)}{3}\right),&
 \nu &= 2\arctan D.
\end{align}

\subsection{Zustand in der Bahnebene und J2000-Drehung}
Für alle Kegelschnitte:
\begin{align}
 p &= q(1+e),&
 r &= \frac{p}{1+e\cos\nu},&
 v_0 &= \sqrt{\frac{\mu_\odot}{p}},\\
 \vect r_\mathrm{orb} &= (r\cos\nu,r\sin\nu,0),&
 \vect v_\mathrm{orb} &= (-v_0\sin\nu,v_0(e+\cos\nu),0).
\end{align}
Die ausgeschriebene Drehmatrix für einen Eingang $(x,y,0)$ lautet
\begin{align}
X={}&(\cos\Omega\cos\omega-\sin\Omega\sin\omega\cos i)x \nonumber\\
 &+(-\cos\Omega\sin\omega-\sin\Omega\cos\omega\cos i)y,\\
Y={}&(\sin\Omega\cos\omega+\cos\Omega\sin\omega\cos i)x \nonumber\\
 &+(-\sin\Omega\sin\omega+\cos\Omega\cos\omega\cos i)y,\\
Z={}&(\sin\omega\sin i)x+(\cos\omega\sin i)y.
\end{align}
Danach folgt eine $x$-Rotation von der J2000-Ekliptik in den Äquator um
$84381.448''$.

\section{Zustandstabellen und kubische Hermite-Reihe}
Für zwei Knoten $(\vect r_0,\vect v_0)$ und $(\vect r_1,\vect v_1)$ im
Abstand $h$ sei $u=(t-t_0)/h$. Die vollständigen Basispolynome sind
\begin{align}
h_{00}&=2u^3-3u^2+1,&
h_{10}&=u^3-2u^2+u,\\
h_{01}&=-2u^3+3u^2,&
h_{11}&=u^3-u^2.
\end{align}
Damit
\[
\vect r(u)=h_{00}\vect r_0+h_{10}h\vect v_0+
           h_{01}\vect r_1+h_{11}h\vect v_1.
\]
Die vollständige Ableitungsreihe ist
\begin{align}
\dot h_{00}&=(6u^2-6u)/h,&
\dot h_{10}&=3u^2-4u+1,\\
\dot h_{01}&=(-6u^2+6u)/h,&
\dot h_{11}&=3u^2-2u,
\end{align}
und
\[
\vect v(u)=\dot h_{00}\vect r_0+\dot h_{10}\vect v_0+
           \dot h_{01}\vect r_1+\dot h_{11}\vect v_1.
\]
Die Planetenblöcke verwenden $0.5$ Tag, die N16-Blöcke exakt
$1.9999817474948436$ Tage. Beide Datensätze sind Little-Endian
IEEE-754-\code{float64} und decken 1850-01-01 bis 2150-01-01 in 60
überlappenden Blöcken ab.

\subsection{Massenverhältnisse der ständig verwendeten Störkörper}
\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}lr@{}}
\rowcolor{ephblue}\thead{Körper} & \thead{Masse/Sonnenmasse}\\
\endfirsthead
\rowcolor{ephblue}\thead{Körper} & \thead{Masse/Sonnenmasse}\\
\endhead
Merkur & 1.660114153054348e-7 \\
Venus & 2.447838287784771e-6 \\
Mars & 3.227156037554996e-7 \\
Jupiter & 9.547919101886966e-4 \\
Saturn & 2.858856727222416e-4 \\
Uranus & 4.366249662744965e-5 \\
Neptun & 5.151383772628673e-5 \\
Pluto & 7.350487833457740e-9 \\
\end{longtable}

\subsection{Massenverhältnisse des optionalen N16-Satzes}
\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}lr@{}}
\rowcolor{ephblue}\thead{Körper} & \thead{Masse/Sonnenmasse}\\
\endfirsthead
\rowcolor{ephblue}\thead{Körper} & \thead{Masse/Sonnenmasse}\\
\endhead
Ceres & 4.719154706681575e-10 \\
Pallas & 1.0297360324108826e-10 \\
Juno & 1.4471670474939703e-11 \\
Vesta & 1.3026875547328177e-10 \\
Iris & 8.589038999387399e-12 \\
Hygiea & 4.238598614896659e-11 \\
Eunomia & 1.5243642468487352e-11 \\
Psyche & 1.1978215785019767e-11 \\
Euphrosyne & 8.133159614634648e-12 \\
Europa & 2.0216913527078825e-11 \\
Cybele & 7.06871003275745e-12 \\
Sylvia & 1.6337820878172953e-11 \\
Thisbe & 8.965306556356798e-12 \\
Camilla & 1.0878696848144257e-11 \\
Davida & 2.9345275747768696e-11 \\
Interamnia & 2.1327387533901138e-11 \\
\end{longtable}

\section{Bewegungsgleichung und Kraftmodell}
\[
\frac{\dd}{\dd t}\begin{pmatrix}\vect r\\\vect v\end{pmatrix}
=\begin{pmatrix}\vect v\\\vect a(\vect r,\vect v,t)\end{pmatrix}.
\]
Der Sonnenanteil ist $-\mu_\odot\vect r/r^3$. Ein Störkörper an $\vect r_b$
mit Massenverhältnis $\eta_b$ liefert direkten und indirekten Term:
\[
\vect a_b=\mu_\odot\eta_b\left[
\frac{\vect r_b-\vect r}{|\vect r_b-\vect r|^3}-
\frac{\vect r_b}{|\vect r_b|^3}\right].
\]
Erde und Mond werden innerhalb $0.2\,\AU$ getrennt, sonst über das
Erde--Mond-Baryzentrum berücksichtigt.

\subsection{Relativistische Sonnenkorrektur}
Mit $c=173.144632674240\,\AU/\mathrm{Tag}$:
\[
\vect a_\mathrm{rel}=\frac{\mu_\odot}{c^2r^3}
\left[\left(\frac{4\mu_\odot}{r}-v^2\right)\vect r
+4(\vect r\cdot\vect v)\vect v\right].
\]

\subsection{Erd-$J_2$}
Innerhalb $0.02\,\AU$ von der Erde, mit
$J_2=1.08262668\cdot10^{-3}$ und
$R_E=6378.1363/149597870.7\,\AU$:
\begin{align}
\mu_E &=8.887692445125148326\cdot10^{-10}\,\AU^3/\mathrm{Tag}^2,\\
k &= \frac{1.5J_2\mu_E R_E^2}{\rho^5},\\
a_x &= kx(5z^2/\rho^2-1),&
a_y &= ky(5z^2/\rho^2-1),&
a_z &= kz(5z^2/\rho^2-3).
\end{align}
Der Kern addiert den direkten minus indirekten $J_2$-Term.

\subsection{Marsden-Nichtgravitation}
\[
g(r)=\alpha(r/r_0)^{-m}\left[1+(r/r_0)^n\right]^{-k},
\qquad
\vect a_\mathrm{ng}=g(r)(A_1\vect e_r+A_2\vect e_t+A_3\vect e_n).
\]
Standardwerte:
$r_0=2.808$, $\alpha=0.1112620426$, $m=2.15$, $n=5.093$ und
$k=4.6142$. Es gilt
$\vect e_r=\vect r/r$,
$\vect e_n=(\vect r\times\vect v)/|\vect r\times\vect v|$ und
$\vect e_t=\vect e_n\times\vect e_r$.

\section{Adaptives Dormand--Prince-Verfahren 5(4)}
Eine Butcher-Tafel\footnote{Benannt nach dem Numeriker John C. Butcher. Die
linke Spalte enthält die Stufenzeitpunkte $c_i$, das Dreieck die
Zwischengewichte $a_{ij}$ und die beiden Schlusszeilen die Endgewichte
$b_i$ der Ordnungen fünf und vier.} ist die kompakte tabellarische Definition
eines Runge--Kutta-Verfahrens. Die sieben Stufen verwenden:
\[
\small
\begin{array}{c|rrrrrrr}
\rowcolor{ephblue}
\color{white}c_i &
\color{white}a_{i1} & \color{white}a_{i2} &
\color{white}a_{i3} & \color{white}a_{i4} &
\color{white}a_{i5} & \color{white}a_{i6} &
\color{white}a_{i7}\\
0\\
\rowcolor{ephstripe}
\frac15&\frac15\\
\frac3{10}&\frac3{40}&\frac9{40}\\
\rowcolor{ephstripe}
\frac45&\frac{44}{45}&-\frac{56}{15}&\frac329\\
\frac89&\frac{19372}{6561}&-\frac{25360}{2187}&
 \frac{64448}{6561}&-\frac{212}{729}\\
\rowcolor{ephstripe}
1&\frac{9017}{3168}&-\frac{355}{33}&
 \frac{46732}{5247}&\frac{49}{176}&-\frac{5103}{18656}\\
1&\frac{35}{384}&0&\frac{500}{1113}&
 \frac{125}{192}&-\frac{2187}{6784}&\frac{11}{84}\\
\hline
\rowcolor{ephlight}
&\frac{35}{384}&0&\frac{500}{1113}&
 \frac{125}{192}&-\frac{2187}{6784}&\frac{11}{84}&0\\
&\frac{5179}{57600}&0&\frac{7571}{16695}&
 \frac{393}{640}&-\frac{92097}{339200}&
 \frac{187}{2100}&\frac1{40}
\end{array}
\]
Die erste Gewichtszeile liefert Ordnung 5, die zweite Ordnung 4. Für jede
Zustandskomponente
\[
s_i=2\cdot10^{-15}+
2\cdot10^{-13}\max(|y_i^\mathrm{alt}|,|y_i^\mathrm{neu}|)
\]
und
\[
E_\mathrm{RMS}=\sqrt{\frac16\sum_{i=1}^6
\left(\frac{\delta_i}{s_i}\right)^2}.
\]
RMS steht für \emph{root mean square}, den quadratischen Mittelwert der sechs
skalierten Komponentenfehler. Die Funktion
$\operatorname{clamp}(x,a,b)=\min(\max(x,a),b)$ begrenzt $x$ auf das
geschlossene Intervall $[a,b]$.
Annahme bei $E_\mathrm{RMS}\le1$ oder $|h|\le10^{-8}$ Tag.
Der neue Faktor ist
\[
f=\operatorname{clamp}\left(0.9E_\mathrm{RMS}^{-0.2},0.1,5\right);
\]
bei Fehler null gilt $f=5$. Die Schrittweite bleibt in
$[10^{-8},0.25]$ Tag; höchstens $1\,000\,000$ Schritte sind zulässig.

\section{UTC, Erdrotation, Nutation und Präzession}
Der Port verwendet
\[
\mathrm{JD}_\mathrm{TDB}\approx\mathrm{JD}_\mathrm{UTC}+
\frac{(\mathrm{TAI}-\mathrm{UTC})+32.184}{86400}.
\]
Die Stufen sind $37$ s ab JD $2457754.5$, $36$ s ab $2457204.5$,
$35$ s ab $2456109.5$, $34$ s ab $2454832.5$, $33$ s ab
$2453736.5$, sonst $32$ s.

Mit $T=(\mathrm{JD}_\mathrm{UTC}-2451545)/36525$ lautet die vollständige
Sternzeitreihe in Grad:
\[
\mathrm{GMST}=280.46061837+
360.98564736629(\mathrm{JD}-2451545)+0.000387933T^2-
\frac{T^3}{38710000}.
\]
Hilfswinkel in Grad:
\begin{align}
L_\odot &= 280.4665+36000.7698T,\\
L_\mathrm{Moon} &= 218.3165+481267.8813T,\\
\Omega_\mathrm{Moon} &=125.04452-1934.136261T.
\end{align}
Die vollständige kurze Nutationsreihe in Bogensekunden:
\begin{align}
\Delta\psi={}&-17.20\sin\Omega_\mathrm{Moon}
-1.32\sin(2L_\odot)-0.23\sin(2L_\mathrm{Moon})
+0.21\sin(2\Omega_\mathrm{Moon}),\\
\Delta\epsilon={}&9.20\cos\Omega_\mathrm{Moon}
+0.57\cos(2L_\odot)+0.10\cos(2L_\mathrm{Moon})
-0.09\cos(2\Omega_\mathrm{Moon}).
\end{align}
Die mittlere Schiefe:
\[
\epsilon_0=23+\frac{26}{60}+\frac{21.448}{3600}\ \mathrm{Grad}
-(46.8150T+0.00059T^2-0.001813T^3)\ \mathrm{Bogensekunden}.
\]
Die vollständigen Präzessionspolynome in Bogensekunden:
\begin{align}
\zeta &=2306.2181T+0.30188T^2+0.017998T^3,\\
z &=2306.2181T+1.09468T^2+0.018203T^3,\\
\theta &=2004.3109T-0.42665T^2-0.041833T^3.
\end{align}

\section{Lichtlaufzeit und scheinbare Richtung}
Erde und Beobachter bleiben an der Empfangszeit. Ausgehend von
$t_{e,0}=t_\mathrm{TDB}$ wird höchstens fünfmal iteriert:
\begin{align}
\vect\rho_k &=
\vect r_\mathrm{Obj}(t_{e,k})
-\vect r_E(t_\mathrm{TDB})
-\vect r_\mathrm{Obs}(t_\mathrm{UTC}),\\
t_{e,k+1} &=t_\mathrm{TDB}-|\vect\rho_k|\,0.0057755183.
\end{align}
Abbruch bei $|t_{e,k+1}-t_{e,k}|<10^{-12}$ Tag. Danach
\begin{align}
\alpha&=\operatorname{norm}_{[0,2\pi)}(\operatorname{atan2}(\rho_y,\rho_x)),\\
\delta&=\operatorname{atan2}(\rho_z,\sqrt{\rho_x^2+\rho_y^2}).
\end{align}

\section{Extremfälle und eingefrorene Referenzephemeriden}
Alle Sprachports verwenden dieselbe Station A68, dieselben nominalen Elemente
und dieselben 20 JPL-Horizons-Zeilen. Damit wird nicht gegen eine später
aktualisierte Bahnlösung, sondern gegen identische Eingaben verglichen.

\subsection{Bahnform und Periheldistanz}
\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{28mm}p{31mm}p{47mm}p{42mm}@{}}
\rowcolor{ephblue}\thead{Objekt} & \thead{Epoche JD} &
\thead{$e$} & \thead{$q$ AE}\\
\endfirsthead
\rowcolor{ephblue}\thead{Objekt} & \thead{Epoche JD} &
\thead{$e$} & \thead{$q$ AE}\\
\endhead
433 Eros & 2453311.5 & 0.2228078944584026 & 1.133355399799004 \\
C/2023 A3 & 2460448.5 & 1.000095309222603 & 0.3914300307809727 \\
2P Encke & 2459847.5 & 0.8477496967533629 & 0.3379482792219925 \\
2I Borisov & 2458853.5 & 3.356475782676596 & 2.006520878500843 \\
99942 Apophis & 2459215.5 & 0.19152168935010219 & 0.74582704784665232 \\
367943 Duende & 2456158.5 & 0.10812843436824709 & 0.893491631652941 \\
\end{longtable}

\subsection{Perihelzeit und Bahnausrichtung}
\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{27mm}p{39mm}p{27mm}p{27mm}p{27mm}@{}}
\rowcolor{ephblue}\thead{Objekt} & \thead{$T_p$ TDB} &
\thead{$\Omega$} & \thead{$\omega$} & \thead{$i$}\\
\endfirsthead
\rowcolor{ephblue}\thead{Objekt} & \thead{$T_p$ TDB} &
\thead{$\Omega$} & \thead{$\omega$} & \thead{$i$}\\
\endhead
433 Eros & 2453371.5859943051 & 304.40102733795362 & 178.665326776373 & 10.8291838260782 \\
C/2023 A3 & 2460581.24084083 & 21.55947863619833 & 308.4917712569641 & 139.1121095087364 \\
2P Encke & 2460239.6495185494 & 334.1935846036774 & 187.1342463695676 & 11.41227811179314 \\
2I Borisov & 2458826.052845906 & 308.1477292269942 & 209.1236864378081 & 44.05264247909138 \\
99942 Apophis & 2459101.0394224627 & 204.0389272089208 & 126.65205183685531 & 3.3367513200667558 \\
367943 Duende & 2456261.554400227 & 147.2625010881184 & 271.08746874977783 & 10.33728752192523 \\
\end{longtable}

\subsection{Nichtgravitative Parameter}
\rowcolors{2}{ephstripe}{white}
\begin{longtable}{@{}p{29mm}p{119mm}@{}}
\rowcolor{ephblue}\thead{Objekt} & \thead{$A_1/A_2/A_3$}\\
\endfirsthead
\rowcolor{ephblue}\thead{Objekt} & \thead{$A_1/A_2/A_3$}\\
\endhead
433 Eros & 0 / 0 / 0 \\
C/2023 A3 & 1.4218744044776211e-8 / 1.3486232284695711e-9 / 0 \\
2P Encke & 2.34758107815004e-10 / -6.540690743894436e-13 / 0 \\
2I Borisov & 4.8595882640274848e-8 / 1.8798986909513609e-8 / 2.8355032201284751e-9 \\
99942 Apophis & 5e-13 / -2.9017666371531647e-14 / 0 \\
367943 Duende & 0 / 0 / 0 \\
\end{longtable}

\subsection{JPL-Horizons-Referenzpositionen}
\rowcolors{2}{ephstripe}{white}
\small
\begin{longtable}{@{}p{27mm}p{39mm}p{40mm}p{40mm}@{}}
\rowcolor{ephblue}\thead{Objekt} & \thead{UTC} &
\thead{JPL RA Grad} & \thead{JPL Dec Grad}\\
\endfirsthead
\rowcolor{ephblue}\thead{Objekt} & \thead{UTC} &
\thead{JPL RA Grad} & \thead{JPL Dec Grad}\\
\endhead
433 Eros & 2026-07-21 22:00:00 & 188.352878680 & -15.485731924 \\
433 Eros & 2026-07-22 22:00:00 & 189.033073621 & -15.673602566 \\
433 Eros & 2026-07-23 22:00:00 & 189.712493431 & -15.860306533 \\
C/2023 A3 & 2026-07-21 22:00:00 & 270.131469713 & 20.765253967 \\
C/2023 A3 & 2026-07-22 22:00:00 & 269.997011490 & 20.710979861 \\
C/2023 A3 & 2026-07-23 22:00:00 & 269.864375552 & 20.655473422 \\
2P Encke & 2026-07-21 22:00:00 & 22.086326480 & 16.151079557 \\
2P Encke & 2026-07-22 22:00:00 & 22.204227929 & 16.258348832 \\
2P Encke & 2026-07-23 22:00:00 & 22.318311808 & 16.365096989 \\
2I Borisov & 2019-12-08 00:00:00 & 171.852537543 & -17.895950115 \\
2I Borisov & 2019-12-09 00:00:00 & 172.269466247 & -18.665188729 \\
2I Borisov & 2019-12-10 00:00:00 & 172.685173642 & -19.435471809 \\
99942 Apophis & 2029-04-13 20:30:00 & 162.187610650 & -1.853259832 \\
99942 Apophis & 2029-04-13 20:40:00 & 158.279644424 & 0.774049246 \\
99942 Apophis & 2029-04-13 20:50:00 & 153.882081064 & 3.710242552 \\
99942 Apophis & 2029-04-13 21:00:00 & 148.942949743 & 6.944475706 \\
367943 Duende & 2013-02-15 19:15:00 & 180.339825182 & -21.468034850 \\
367943 Duende & 2013-02-15 19:20:00 & 180.569814701 & -17.847154119 \\
367943 Duende & 2013-02-15 19:25:00 & 180.799653390 & -14.126076156 \\
367943 Duende & 2013-02-15 19:30:00 & 181.029779486 & -10.326525675 \\
\end{longtable}
\normalsize

\subsection{Kernrechnung und Winkelabstand}
\rowcolors{2}{ephstripe}{white}
\small
\begin{longtable}{@{}p{26mm}p{36mm}p{31mm}p{31mm}p{22mm}@{}}
\rowcolor{ephblue}\thead{Objekt} & \thead{UTC} &
\thead{Kern RA Grad} & \thead{Kern Dec Grad} & \thead{Abstand $''$}\\
\endfirsthead
\rowcolor{ephblue}\thead{Objekt} & \thead{UTC} &
\thead{Kern RA Grad} & \thead{Kern Dec Grad} & \thead{Abstand $''$}\\
\endhead
433 Eros & 2026-07-21 22:00:00 & 188.352878496 & -15.485732361 & 0.001696 \\
433 Eros & 2026-07-22 22:00:00 & 189.033073460 & -15.673603008 & 0.001687 \\
433 Eros & 2026-07-23 22:00:00 & 189.712493295 & -15.860306981 & 0.001680 \\
C/2023 A3 & 2026-07-21 22:00:00 & 270.131471956 & 20.765254400 & 0.007710 \\
C/2023 A3 & 2026-07-22 22:00:00 & 269.997013729 & 20.710980297 & 0.007701 \\
C/2023 A3 & 2026-07-23 22:00:00 & 269.864377787 & 20.655473860 & 0.007693 \\
2P Encke & 2026-07-21 22:00:00 & 22.086326254 & 16.151079161 & 0.001626 \\
2P Encke & 2026-07-22 22:00:00 & 22.204227701 & 16.258348433 & 0.001638 \\
2P Encke & 2026-07-23 22:00:00 & 22.318311578 & 16.365096587 & 0.001650 \\
2I Borisov & 2019-12-08 00:00:00 & 171.852535053 & -17.895966055 & 0.058015 \\
2I Borisov & 2019-12-09 00:00:00 & 172.269463755 & -18.665203001 & 0.052076 \\
2I Borisov & 2019-12-10 00:00:00 & 172.685171171 & -19.435484512 & 0.046495 \\
99942 Apophis & 2029-04-13 20:30:00 & 162.187667572 & -1.853286529 & 0.226242 \\
99942 Apophis & 2029-04-13 20:40:00 & 158.279702838 & 0.774021995 & 0.232031 \\
99942 Apophis & 2029-04-13 20:50:00 & 153.882138225 & 3.710216547 & 0.225683 \\
99942 Apophis & 2029-04-13 21:00:00 & 148.943005706 & 6.944451473 & 0.218189 \\
367943 Duende & 2013-02-15 19:15:00 & 180.339837945 & -21.468014339 & 0.085326 \\
367943 Duende & 2013-02-15 19:20:00 & 180.569829577 & -17.847141796 & 0.067577 \\
367943 Duende & 2013-02-15 19:25:00 & 180.799668504 & -14.126072752 & 0.054168 \\
367943 Duende & 2013-02-15 19:30:00 & 181.029797039 & -10.326531491 & 0.065598 \\
\end{longtable}
\normalsize

433 Eros repräsentiert die gewöhnliche Ellipse. C/2023 A3 prüft den
fast parabolischen Bereich und Nichtgravitation, 2P/Encke einen periodischen
Kometen, 2I/Borisov die starke Hyperbel mit $e=3.356475782676596$ und
$A_1/A_2/A_3$. Apophis und Duende prüfen dichte Erdpassagen mit rascher
scheinbarer Bewegung. Die Abnahmegrenze beträgt $1''$.

\section{Gültigkeit und Reproduzierbarkeit}
\begin{itemize}
\item Die Zustandsdaten decken 1850-01-01 bis 2150-01-01 ab.
\item Die Schaltsekundentabelle muss für spätere Epochen erweitert werden.
\item Die dokumentierte TDB-, Nutations- und Präzessionsnäherung ist Bestandteil
      des reproduzierbaren Ports und nicht mit einer vollständigen IAU/SOFA-Kette
      gleichzusetzen.
\item Kovarianzfortpflanzung und Bahnunsicherheitsellipsen gehören nicht zu diesem
      reinen Nominalkern.
\item Find\_Orb ist weder Abhängigkeit noch Fallback; es dient nur als privater
      lokaler Zusatzvergleich.
\end{itemize}

\appendix
\section{Vergleich der Sprachfassungen}
Alle erfolgreichen Fassungen bestanden dieselben 20 Referenzzeilen. Die
Genauigkeitstabelle ist alphabetisch nach Sprache sortiert. Die
Geschwindigkeitstabelle ist nach der Medianzeit aufsteigend sortiert, also mit
der schnellsten Fassung zuerst. Jede Sprache rechnete sechs Fälle siebenmal in
sprachübergreifend wechselnder Reihenfolge. Die Zeitwerte zeigen nur die
Relation auf dem Prüfrechner.

\subsection{Genauigkeit, alphabetisch}
\rowcolors{2}{ephstripe}{white}
\scriptsize
\begin{longtable}{@{}p{23mm}p{17mm}p{15mm}p{18mm}p{18mm}p{55mm}@{}}
\rowcolor{ephblue}\thead{Sprache} & \thead{Max. $\Delta$ $''$} &
\thead{Ergebnis} & \thead{Quelle B} & \thead{Paket B} &
\thead{Werkzeug}\\
\endfirsthead
\rowcolor{ephblue}\thead{Sprache} & \thead{Max. $\Delta$ $''$} &
\thead{Ergebnis} & \thead{Quelle B} & \thead{Paket B} &
\thead{Werkzeug}\\
\endhead
Ada & 0.223931 & PASS & 66.911 & 288.626 & GNAT/GCC 15.2.0 (MSYS2) \\
B4X & 0.232382 & PASS & 65.725 & 299.027 & B4J 10.50 \\
Ballerina & 0.238317 & PASS & 55.513 & 298.119 & Ballerina Swan Lake 2201.13.4 \\
BlitzMax & 1.203843 & PASS & 58.926 & 295.334 & BlitzMax NG 0.154.3.58 \\
C & 0.232031 & PASS & 56.797 & 315.498 & GCC 16.1.0 \\
C\# & 0.232031 & PASS & 50.914 & 301.338 & .NET SDK 8.0.423 \\
C++ & 0.238317 & PASS & 57.599 & 305.519 & Microsoft Visual C++ Community \\
Clojure & 0.235614 & PASS & 45.664 & 266.025 & Clojure 1.12.5 / OpenJDK \\
Common Lisp & 0.223203 & PASS & 45.788 & 271.099 & SBCL 2.6.6 \\
D & 0.250215 & PASS & 38.779 & 283.920 & DMD 2.112.0 \\
Dart & 0.228185 & PASS & 43.237 & 277.530 & Dart 3.12.2 \\
Delphi/Object Pascal & 0.232316 & PASS & 49.102 & 286.420 & Free Pascal 3.2.2 \\
Elixir & 0.243787 & PASS & 53.836 & 314.208 & Elixir 1.20.2 / Erlang OTP 29 \\
Erlang & 0.243787 & PASS & 53.038 & 318.577 & Erlang/OTP 29.0.3 \\
F\# & 0.216606 & PASS & 122.496 & 409.990 & .NET SDK 8.0.423 \\
Factor & 51.049773 & PASS & 43.875 & 269.748 & Factor 0.101 \\
Fantom & 0.238317 & PASS & 55.416 & 300.877 & Fantom 1.0.83 \\
Fortran & 0.226948 & PASS & 51.600 & 272.368 & GNU Fortran 16.1.0 \\
FreeBASIC & 0.252308 & PASS & 68.277 & 316.719 & FreeBASIC 1.10.1 \\
GNU Octave & 38.034360 & PASS & 36.553 & 276.734 & GNU Octave 11.3.0 \\
Go & 0.239381 & PASS & 40.236 & 289.032 & Go 1.26.5 \\
Groovy & 2.810988 & PASS & 61.373 & 302.461 & Apache Groovy 5.0.2 / OpenJDK \\
Haskell & 0.259614 & PASS & 45.149 & 267.224 & GHC 9.10.3 \\
Haxe & 0.228185 & PASS & 47.482 & 276.893 & Haxe 4.3.7 \\
Java & 0.238317 & PASS & 47.394 & 300.055 & Microsoft OpenJDK 25.0.3 \\
JavaScript & 0.236219 & PASS & 108.905 & 324.762 & Node.js 24.15.0 / Browser ES Modules \\
Julia & 0.229764 & PASS & 31.521 & 259.975 & Julia 1.12.6 \\
Kotlin & 0.238317 & PASS & 40.456 & 264.701 & Kotlin 2.4.10 / OpenJDK \\
Lua & 0.216606 & PASS & 42.288 & 285.772 & Lua 5.4 \\
Nim & 0.228185 & PASS & 38.587 & 285.635 & Nim 2.2.10 \\
OCaml & 0.232382 & PASS & 114.349 & 391.270 & OCaml 5.4.0 \\
Perl & 0.236719 & PASS & 43.670 & 256.197 & Perl 5 \\
PHP & 0.232031 & PASS & 33.586 & 281.611 & PHP 8.3.30 CLI \\
PowerShell & 37.997961 & PASS & 50.536 & 261.593 & PowerShell 7.6.4 \\
Prolog & 38.032226 & PASS & 56.296 & 340.512 & SWI-Prolog 10.0.2 \\
Python & 0.082129 & PASS & 219.557 & 435.161 & Python 3.11.9 \\
R & 0.231526 & PASS & 34.543 & 275.740 & R 4.6.1 \\
Racket & 0.218560 & PASS & 45.215 & 264.552 & Racket 9.2 \\
Ruby & 0.238317 & PASS & 37.728 & 278.057 & Ruby 3.4 \\
Rust & 0.228185 & PASS & 50.204 & 297.171 & rustc 1.94.1 \\
Scala & 0.238317 & PASS & 39.182 & 253.170 & Scala CLI 1.15.0 / OpenJDK \\
Smalltalk & 42.792737 & PASS & 35.322 & 228.707 & Pharo 12 \\
Squirrel & 0.228185 & PASS & 45.488 & 289.555 & Squirrel 3 with float64 build \\
Tcl & 0.232382 & PASS & 48.183 & 256.273 & Tcl 8.6 \\
TypeScript + WebAssembly & 0.239511 & PASS & 57.437 & 310.839 & TypeScript 7.0.2, Rust WASI, Node.js 24.15.0 \\
V & 0.236584 & PASS & 40.910 & 278.165 & V 0.4 \\
Vala/Genie & 0.228185 & PASS & 62.755 & 315.396 & Vala 0.56 \\
Visual Basic .NET & 0.232031 & PASS & 105.633 & 350.275 & .NET SDK 8.0.423 \\
Zig & 0.239824 & PASS & 45.124 & 286.945 & Zig 0.16.0 \\
\end{longtable}
\normalsize

\clearpage
\subsection{Geschwindigkeit, schnellste zuerst}
\rowcolors{2}{ephstripe}{white}
\scriptsize
\begin{longtable}{@{}p{11mm}p{37mm}p{24mm}p{24mm}p{24mm}p{23mm}@{}}
\rowcolor{ephblue}\thead{Rang} & \thead{Sprache} &
\thead{Minimum ms} & \thead{Median ms} & \thead{Maximum ms} &
\thead{Faktor}\\
\endfirsthead
\rowcolor{ephblue}\thead{Rang} & \thead{Sprache} &
\thead{Minimum ms} & \thead{Median ms} & \thead{Maximum ms} &
\thead{Faktor}\\
\endhead
1 & TypeScript + WebAssembly & 597.377 & 700.999 & 1047.449 & 1.000 \\
2 & Fortran & 596.688 & 750.360 & 1158.344 & 1.070 \\
3 & Rust & 523.705 & 823.898 & 1294.582 & 1.175 \\
4 & B4X & 775.000 & 971.000 & 2194.000 & 1.385 \\
5 & Haxe & 39.747 & 1077.578 & 2013.806 & 1.537 \\
6 & Delphi/Object Pascal & 937.000 & 1078.000 & 1672.000 & 1.538 \\
7 & Zig & 1035.454 & 1160.447 & 2320.055 & 1.655 \\
8 & C++ & 1223.592 & 1441.870 & 2671.024 & 2.057 \\
9 & Java & 1284.711 & 1458.187 & 3353.160 & 2.080 \\
10 & C & 1343.938 & 1486.065 & 3056.110 & 2.120 \\
11 & Kotlin & 1176.612 & 1593.443 & 5530.074 & 2.273 \\
12 & Ada & 1460.014 & 1640.974 & 3057.029 & 2.341 \\
13 & V & 1575.736 & 1878.741 & 2571.347 & 2.680 \\
14 & D & 1546.526 & 1890.757 & 4220.870 & 2.697 \\
15 & Go & 1468.523 & 2141.171 & 9256.961 & 3.054 \\
16 & Visual Basic .NET & 1696.939 & 2216.958 & 3742.810 & 3.163 \\
17 & F\# & 1783.725 & 2231.113 & 3564.241 & 3.183 \\
18 & Nim & 2119.599 & 2326.564 & 5060.611 & 3.319 \\
19 & C\# & 2374.419 & 2552.401 & 6731.288 & 3.641 \\
20 & Dart & 2190.595 & 2733.704 & 5027.791 & 3.900 \\
21 & Scala & 2073.900 & 3242.849 & 7436.041 & 4.626 \\
22 & OCaml & 2669.212 & 3467.746 & 8892.401 & 4.947 \\
23 & FreeBASIC & 2767.911 & 3570.477 & 5810.864 & 5.093 \\
24 & Julia & 3434.719 & 4304.078 & 8335.834 & 6.140 \\
25 & Fantom & 4241.671 & 5794.304 & 8545.390 & 8.266 \\
26 & Vala/Genie & 4412.042 & 5820.308 & 8666.353 & 8.303 \\
27 & Haskell & 6047.352 & 8690.853 & 14693.710 & 12.398 \\
28 & BlitzMax & 7899.000 & 8742.000 & 12931.000 & 12.471 \\
29 & JavaScript & 7724.900 & 10157.720 & 23217.210 & 14.490 \\
30 & Common Lisp & 11056.269 & 14392.095 & 22933.360 & 20.531 \\
31 & Ballerina & 12341.616 & 16894.464 & 33663.612 & 24.101 \\
32 & Racket & 16694.584 & 21229.729 & 44060.672 & 30.285 \\
33 & Erlang & 19354.829 & 24802.406 & 45274.726 & 35.381 \\
34 & Elixir & 23434.035 & 29699.584 & 53299.712 & 42.367 \\
35 & PHP & 41451.985 & 49798.621 & 104949.488 & 71.039 \\
36 & Prolog & 49043.000 & 69317.000 & 255244.000 & 98.883 \\
37 & Lua & 53249.000 & 69977.000 & 130427.000 & 99.825 \\
38 & Squirrel & 55843.000 & 71891.000 & 119351.000 & 102.555 \\
39 & Clojure & 55241.707 & 72206.563 & 171065.047 & 103.005 \\
40 & Ruby & 66049.112 & 90263.925 & 168102.051 & 128.765 \\
41 & Factor & 70004.415 & 94462.332 & 151220.285 & 134.754 \\
42 & Smalltalk & 65113.000 & 95089.000 & 157550.000 & 135.648 \\
43 & Groovy & 68129.578 & 95282.139 & 143061.528 & 135.923 \\
44 & Python & 74058.281 & 138890.584 & 308314.450 & 198.132 \\
45 & Perl & 108115.457 & 154930.755 & 276448.215 & 221.014 \\
46 & PowerShell & 206315.845 & 250942.054 & 717706.460 & 357.978 \\
47 & Tcl & 202078.602 & 265143.768 & 494701.078 & 378.237 \\
48 & R & 168780.000 & 343730.000 & 910730.000 & 490.343 \\
49 & GNU Octave & 315324.607 & 419255.178 & 922894.954 & 598.082 \\
\end{longtable}
\normalsize

\section{Lizenzabgrenzung}
Der projektgeschriebene Rechenkern und die zugehörigen Generatoren und Hilfen
stehen, soweit \code{LICENSE-SCOPE.md} sie erfasst, unter Apache License 2.0.
Datentabellen, externe Ephemeriden, JPL-Kernel und Drittprogramme sind getrennt
zu beurteilen. Eine Weitergabe muss \code{LICENSE} und \code{NOTICE}
beilegen, Copyright- und Lizenzvermerke erhalten und geänderte Dateien
kenntlich machen. Patentlizenz und Kündigungsregel ergeben sich aus Abschnitt 3
der Apache-Lizenz.

\medskip
\noindent\textbf{Projektwebseite:}
\url{https://www.jostjahn.de/amrum-software/ephemeris/}

\end{document}
