\[ \begin{array}{c}[phi1, phi2] = \mathsf{sort}([phi1, phi2])\\ \end{array} \]
Math FPCore C Julia Wolfram TeX \[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R
\]
↓
\[\cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \lambda_2 \cdot \left(\cos \phi_1 \cdot \sin \lambda_1\right)\right)\right)\right) \cdot R
\]
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(*
(acos
(+
(* (sin phi1) (sin phi2))
(* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)))))
R)) ↓
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(*
(acos
(fma
(sin phi1)
(sin phi2)
(*
(cos phi2)
(+
(* (cos phi1) (* (cos lambda1) (cos lambda2)))
(* (sin lambda2) (* (cos phi1) (sin lambda1)))))))
R)) double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return acos(((sin(phi1) * sin(phi2)) + ((cos(phi1) * cos(phi2)) * cos((lambda1 - lambda2))))) * R;
}
↓
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return acos(fma(sin(phi1), sin(phi2), (cos(phi2) * ((cos(phi1) * (cos(lambda1) * cos(lambda2))) + (sin(lambda2) * (cos(phi1) * sin(lambda1))))))) * R;
}
function code(R, lambda1, lambda2, phi1, phi2)
return Float64(acos(Float64(Float64(sin(phi1) * sin(phi2)) + Float64(Float64(cos(phi1) * cos(phi2)) * cos(Float64(lambda1 - lambda2))))) * R)
end
↓
function code(R, lambda1, lambda2, phi1, phi2)
return Float64(acos(fma(sin(phi1), sin(phi2), Float64(cos(phi2) * Float64(Float64(cos(phi1) * Float64(cos(lambda1) * cos(lambda2))) + Float64(sin(lambda2) * Float64(cos(phi1) * sin(lambda1))))))) * R)
end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := N[(N[ArcCos[N[(N[(N[Sin[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] + N[(N[(N[Cos[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * R), $MachinePrecision]
↓
code[R_, lambda1_, lambda2_, phi1_, phi2_] := N[(N[ArcCos[N[(N[Sin[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Cos[phi1], $MachinePrecision] * N[(N[Cos[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sin[lambda2], $MachinePrecision] * N[(N[Cos[phi1], $MachinePrecision] * N[Sin[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * R), $MachinePrecision]
\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R
↓
\cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \lambda_2 \cdot \left(\cos \phi_1 \cdot \sin \lambda_1\right)\right)\right)\right) \cdot R
Alternatives Alternative 1 Accuracy 94.1% Cost 71488
\[\cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \lambda_2 \cdot \left(\cos \phi_1 \cdot \sin \lambda_1\right)\right)\right)\right) \cdot R
\]
Alternative 2 Accuracy 94.1% Cost 64960
\[R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right)\right)\right)
\]
Alternative 3 Accuracy 94.1% Cost 64960
\[R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right)\right)\right)
\]
Alternative 4 Accuracy 83.6% Cost 58824
\[\begin{array}{l}
t_0 := \cos \phi_2 \cdot \cos \phi_1\\
t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -900000000000:\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + t_0 \cdot t_1\right)\\
\mathbf{elif}\;\phi_1 \leq 0.0024:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + t_0 \cdot \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_2 \cdot \sin \lambda_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_1 \cdot \left(\cos \phi_2 \cdot t_1\right)\right)\right)\\
\end{array}
\]
Alternative 5 Accuracy 94.1% Cost 58688
\[R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)
\]
Alternative 6 Accuracy 83.6% Cost 52552
\[\begin{array}{l}
t_0 := \cos \phi_2 \cdot \cos \phi_1\\
t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -1000000000000:\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + t_0 \cdot t_1\right)\\
\mathbf{elif}\;\phi_1 \leq 0.00088:\\
\;\;\;\;R \cdot \cos^{-1} \left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot t_0 + \phi_1 \cdot \sin \phi_2\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_1 \cdot \left(\cos \phi_2 \cdot t_1\right)\right)\right)\\
\end{array}
\]
Alternative 7 Accuracy 69.5% Cost 45892
\[\begin{array}{l}
\mathbf{if}\;\lambda_2 \leq -4.8:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + \cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\\
\end{array}
\]
Alternative 8 Accuracy 75.8% Cost 39625
\[\begin{array}{l}
\mathbf{if}\;\phi_2 \leq -2.5 \cdot 10^{-234} \lor \neg \left(\phi_2 \leq 1.95 \cdot 10^{-221}\right):\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_1 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \phi_1 \cdot \phi_2\right)\\
\end{array}
\]
Alternative 9 Accuracy 59.6% Cost 39240
\[\begin{array}{l}
t_0 := \cos \left(\lambda_2 - \lambda_1\right)\\
\mathbf{if}\;\phi_1 \leq -1.9 \cdot 10^{-7}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_1 \cdot t_0\right)\right)\\
\mathbf{elif}\;\phi_1 \leq 17000:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot t_0\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \cos \phi_1\right)\right)\\
\end{array}
\]
Alternative 10 Accuracy 59.1% Cost 39236
\[\begin{array}{l}
\mathbf{if}\;\lambda_2 \leq 0.00095:\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \cos \lambda_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \cos \left(\lambda_2 - \lambda_1\right)\right)\right)\\
\end{array}
\]
Alternative 11 Accuracy 64.0% Cost 39236
\[\begin{array}{l}
t_0 := \sin \phi_1 \cdot \sin \phi_2\\
\mathbf{if}\;\lambda_2 \leq 5.5 \cdot 10^{-7}:\\
\;\;\;\;R \cdot \cos^{-1} \left(t_0 + \cos \phi_2 \cdot \left(\cos \phi_1 \cdot \cos \lambda_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(t_0 + \cos \lambda_2 \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)\\
\end{array}
\]
Alternative 12 Accuracy 74.1% Cost 39232
\[R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)
\]
Alternative 13 Accuracy 59.7% Cost 39112
\[\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -1.3 \cdot 10^{-6}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_1 \cdot \cos \left(\lambda_2 - \lambda_1\right)\right)\right)\\
\mathbf{elif}\;\phi_1 \leq 0.00095:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \cos \phi_2 \cdot \cos \phi_1\right)\right)\\
\end{array}
\]
Alternative 14 Accuracy 56.3% Cost 33228
\[\begin{array}{l}
t_0 := \cos \phi_2 \cdot \cos \phi_1\\
t_1 := R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + t_0\right)\\
t_2 := t_0 \cdot \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_2 \leq -1.15 \cdot 10^{-13}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\phi_2 \leq 0.042:\\
\;\;\;\;R \cdot \cos^{-1} \left(t_2 + \sin \phi_1 \cdot \phi_2\right)\\
\mathbf{elif}\;\phi_2 \leq 1.25 \cdot 10^{+193}:\\
\;\;\;\;R \cdot \cos^{-1} \left(t_2 + \phi_1 \cdot \sin \phi_2\right)\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\]
Alternative 15 Accuracy 55.2% Cost 33097
\[\begin{array}{l}
t_0 := \cos \phi_2 \cdot \cos \phi_1\\
\mathbf{if}\;\phi_1 \leq -8.5 \cdot 10^{+60} \lor \neg \left(\phi_1 \leq 13.5\right):\\
\;\;\;\;R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + t_0\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(t_0 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \phi_1 \cdot \sin \phi_2\right)\\
\end{array}
\]
Alternative 16 Accuracy 55.0% Cost 32972
\[\begin{array}{l}
t_0 := R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot \cos \phi_1\right)\\
t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -2.15 \cdot 10^{+61}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\phi_1 \leq -1.3 \cdot 10^{-6}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot t_1\right)\\
\mathbf{elif}\;\phi_1 \leq 0.000114:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot t_1\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
Alternative 17 Accuracy 55.0% Cost 32972
\[\begin{array}{l}
t_0 := R \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot \cos \phi_1\right)\\
t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -1.15 \cdot 10^{+61}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\phi_1 \leq -1.3 \cdot 10^{-6}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \mathsf{expm1}\left(\mathsf{log1p}\left(\cos \phi_1 \cdot t_1\right)\right)\right)\\
\mathbf{elif}\;\phi_1 \leq 0.0065:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot t_1\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\]
Alternative 18 Accuracy 50.2% Cost 26568
\[\begin{array}{l}
t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -6.7 \cdot 10^{+69}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_1 \cdot \left(\cos \lambda_1 + \lambda_2 \cdot \sin \lambda_1\right)\right)\\
\mathbf{elif}\;\phi_1 \leq -1.3 \cdot 10^{-6}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot t_0\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \sin \phi_2 + \cos \phi_2 \cdot t_0\right)\\
\end{array}
\]
Alternative 19 Accuracy 40.5% Cost 26440
\[\begin{array}{l}
t_0 := \cos \lambda_1 + \lambda_2 \cdot \sin \lambda_1\\
\mathbf{if}\;\phi_2 \leq -1.35 \cdot 10^{-266}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_1 \cdot t_0\right)\\
\mathbf{elif}\;\phi_2 \leq 4.7 \cdot 10^{-10}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_2 \cdot t_0\right)\\
\end{array}
\]
Alternative 20 Accuracy 29.8% Cost 26308
\[\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 165:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \lambda_2\right)\right)\right)\\
\end{array}
\]
Alternative 21 Accuracy 30.8% Cost 26308
\[\begin{array}{l}
\mathbf{if}\;\lambda_2 \leq 0.0021:\\
\;\;\;\;R \cdot \cos^{-1} \left(\cos \phi_1 \cdot \left(\cos \lambda_1 + \lambda_2 \cdot \sin \lambda_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \lambda_2\right)\\
\end{array}
\]
Alternative 22 Accuracy 23.8% Cost 19908
\[\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -6:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \lambda_1\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(-0.5 \cdot \left(\phi_1 \cdot \phi_1\right) + 1\right)\right)\\
\end{array}
\]
Alternative 23 Accuracy 21.6% Cost 19908
\[\begin{array}{l}
\mathbf{if}\;\lambda_1 \leq -2.6 \cdot 10^{-5}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \lambda_1\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \lambda_2\right)\\
\end{array}
\]
Alternative 24 Accuracy 26.1% Cost 19904
\[R \cdot \cos^{-1} \left(\phi_1 \cdot \phi_2 + \cos \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)
\]
Alternative 25 Accuracy 18.5% Cost 13376
\[R \cdot \cos^{-1} \left(\cos \left(\lambda_1 - \lambda_2\right) + \phi_1 \cdot \phi_2\right)
\]