\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\log \left(e^{e^{\log \left(\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)\right)}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22919 = phi1;
double r22920 = sin(r22919);
double r22921 = phi2;
double r22922 = sin(r22921);
double r22923 = r22920 * r22922;
double r22924 = cos(r22919);
double r22925 = cos(r22921);
double r22926 = r22924 * r22925;
double r22927 = lambda1;
double r22928 = lambda2;
double r22929 = r22927 - r22928;
double r22930 = cos(r22929);
double r22931 = r22926 * r22930;
double r22932 = r22923 + r22931;
double r22933 = acos(r22932);
double r22934 = R;
double r22935 = r22933 * r22934;
return r22935;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22936 = phi1;
double r22937 = sin(r22936);
double r22938 = phi2;
double r22939 = sin(r22938);
double r22940 = r22937 * r22939;
double r22941 = cos(r22936);
double r22942 = cos(r22938);
double r22943 = r22941 * r22942;
double r22944 = lambda1;
double r22945 = cos(r22944);
double r22946 = lambda2;
double r22947 = cos(r22946);
double r22948 = r22945 * r22947;
double r22949 = sin(r22944);
double r22950 = sin(r22946);
double r22951 = r22949 * r22950;
double r22952 = exp(r22951);
double r22953 = log(r22952);
double r22954 = r22948 + r22953;
double r22955 = r22943 * r22954;
double r22956 = r22940 + r22955;
double r22957 = acos(r22956);
double r22958 = log(r22957);
double r22959 = exp(r22958);
double r22960 = exp(r22959);
double r22961 = log(r22960);
double r22962 = R;
double r22963 = r22961 * r22962;
return r22963;
}



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
rmApplied add-log-exp3.6
rmApplied add-exp-log3.6
Final simplification3.6
herbie shell --seed 2020018
(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))