\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(\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 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22878 = phi1;
double r22879 = sin(r22878);
double r22880 = phi2;
double r22881 = sin(r22880);
double r22882 = r22879 * r22881;
double r22883 = cos(r22878);
double r22884 = cos(r22880);
double r22885 = r22883 * r22884;
double r22886 = lambda1;
double r22887 = lambda2;
double r22888 = r22886 - r22887;
double r22889 = cos(r22888);
double r22890 = r22885 * r22889;
double r22891 = r22882 + r22890;
double r22892 = acos(r22891);
double r22893 = R;
double r22894 = r22892 * r22893;
return r22894;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22895 = phi1;
double r22896 = sin(r22895);
double r22897 = phi2;
double r22898 = sin(r22897);
double r22899 = r22896 * r22898;
double r22900 = cos(r22895);
double r22901 = cos(r22897);
double r22902 = r22900 * r22901;
double r22903 = lambda1;
double r22904 = cos(r22903);
double r22905 = lambda2;
double r22906 = cos(r22905);
double r22907 = r22904 * r22906;
double r22908 = sin(r22903);
double r22909 = sin(r22905);
double r22910 = r22908 * r22909;
double r22911 = 3.0;
double r22912 = pow(r22910, r22911);
double r22913 = cbrt(r22912);
double r22914 = r22907 + r22913;
double r22915 = r22902 * r22914;
double r22916 = r22899 + r22915;
double r22917 = acos(r22916);
double r22918 = R;
double r22919 = r22917 * r22918;
return r22919;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied cos-diff3.8
rmApplied add-cbrt-cube3.8
Applied add-cbrt-cube3.8
Applied cbrt-unprod3.8
Simplified3.8
Final simplification3.8
herbie shell --seed 2019323
(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))