\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(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \log \left(e^{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1589794 = phi1;
double r1589795 = sin(r1589794);
double r1589796 = phi2;
double r1589797 = sin(r1589796);
double r1589798 = r1589795 * r1589797;
double r1589799 = cos(r1589794);
double r1589800 = cos(r1589796);
double r1589801 = r1589799 * r1589800;
double r1589802 = lambda1;
double r1589803 = lambda2;
double r1589804 = r1589802 - r1589803;
double r1589805 = cos(r1589804);
double r1589806 = r1589801 * r1589805;
double r1589807 = r1589798 + r1589806;
double r1589808 = acos(r1589807);
double r1589809 = R;
double r1589810 = r1589808 * r1589809;
return r1589810;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1589811 = phi1;
double r1589812 = cos(r1589811);
double r1589813 = phi2;
double r1589814 = cos(r1589813);
double r1589815 = r1589812 * r1589814;
double r1589816 = lambda2;
double r1589817 = cos(r1589816);
double r1589818 = lambda1;
double r1589819 = cos(r1589818);
double r1589820 = r1589817 * r1589819;
double r1589821 = sin(r1589816);
double r1589822 = sin(r1589818);
double r1589823 = r1589821 * r1589822;
double r1589824 = exp(r1589823);
double r1589825 = log(r1589824);
double r1589826 = r1589820 + r1589825;
double r1589827 = r1589815 * r1589826;
double r1589828 = sin(r1589813);
double r1589829 = sin(r1589811);
double r1589830 = r1589828 * r1589829;
double r1589831 = r1589827 + r1589830;
double r1589832 = acos(r1589831);
double r1589833 = R;
double r1589834 = r1589832 * r1589833;
return r1589834;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.7
rmApplied cos-diff3.6
rmApplied add-log-exp3.6
Final simplification3.6
herbie shell --seed 2019151
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))