\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(\log \left(e^{\sin \phi_1 \cdot \sin \phi_2}\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27772 = phi1;
double r27773 = sin(r27772);
double r27774 = phi2;
double r27775 = sin(r27774);
double r27776 = r27773 * r27775;
double r27777 = cos(r27772);
double r27778 = cos(r27774);
double r27779 = r27777 * r27778;
double r27780 = lambda1;
double r27781 = lambda2;
double r27782 = r27780 - r27781;
double r27783 = cos(r27782);
double r27784 = r27779 * r27783;
double r27785 = r27776 + r27784;
double r27786 = acos(r27785);
double r27787 = R;
double r27788 = r27786 * r27787;
return r27788;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27789 = phi1;
double r27790 = sin(r27789);
double r27791 = phi2;
double r27792 = sin(r27791);
double r27793 = r27790 * r27792;
double r27794 = exp(r27793);
double r27795 = log(r27794);
double r27796 = cos(r27789);
double r27797 = cos(r27791);
double r27798 = r27796 * r27797;
double r27799 = lambda1;
double r27800 = cos(r27799);
double r27801 = lambda2;
double r27802 = cos(r27801);
double r27803 = r27800 * r27802;
double r27804 = sin(r27799);
double r27805 = sin(r27801);
double r27806 = r27804 * r27805;
double r27807 = exp(r27806);
double r27808 = log(r27807);
double r27809 = r27803 + r27808;
double r27810 = r27798 * r27809;
double r27811 = r27795 + r27810;
double r27812 = acos(r27811);
double r27813 = R;
double r27814 = r27812 * r27813;
return r27814;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied cos-diff3.9
rmApplied add-log-exp3.9
rmApplied add-log-exp3.9
Final simplification3.9
herbie shell --seed 2019344 +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))