\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 Re^{\log \left(\log \left(1 \cdot e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)\right)} \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26805 = phi1;
double r26806 = sin(r26805);
double r26807 = phi2;
double r26808 = sin(r26807);
double r26809 = r26806 * r26808;
double r26810 = cos(r26805);
double r26811 = cos(r26807);
double r26812 = r26810 * r26811;
double r26813 = lambda1;
double r26814 = lambda2;
double r26815 = r26813 - r26814;
double r26816 = cos(r26815);
double r26817 = r26812 * r26816;
double r26818 = r26809 + r26817;
double r26819 = acos(r26818);
double r26820 = R;
double r26821 = r26819 * r26820;
return r26821;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26822 = 1.0;
double r26823 = phi1;
double r26824 = sin(r26823);
double r26825 = phi2;
double r26826 = sin(r26825);
double r26827 = r26824 * r26826;
double r26828 = cos(r26823);
double r26829 = cos(r26825);
double r26830 = r26828 * r26829;
double r26831 = lambda1;
double r26832 = cos(r26831);
double r26833 = lambda2;
double r26834 = cos(r26833);
double r26835 = r26832 * r26834;
double r26836 = sin(r26831);
double r26837 = sin(r26833);
double r26838 = r26836 * r26837;
double r26839 = r26835 + r26838;
double r26840 = r26830 * r26839;
double r26841 = r26827 + r26840;
double r26842 = acos(r26841);
double r26843 = exp(r26842);
double r26844 = r26822 * r26843;
double r26845 = log(r26844);
double r26846 = log(r26845);
double r26847 = exp(r26846);
double r26848 = R;
double r26849 = r26847 * r26848;
return r26849;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied cos-diff3.5
rmApplied add-exp-log3.5
rmApplied add-log-exp3.5
rmApplied *-un-lft-identity3.5
Final simplification3.5
herbie shell --seed 2020025 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
:precision binary64
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))