\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 + \sqrt[3]{{\left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)\right)}^{3}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25865 = phi1;
double r25866 = sin(r25865);
double r25867 = phi2;
double r25868 = sin(r25867);
double r25869 = r25866 * r25868;
double r25870 = cos(r25865);
double r25871 = cos(r25867);
double r25872 = r25870 * r25871;
double r25873 = lambda1;
double r25874 = lambda2;
double r25875 = r25873 - r25874;
double r25876 = cos(r25875);
double r25877 = r25872 * r25876;
double r25878 = r25869 + r25877;
double r25879 = acos(r25878);
double r25880 = R;
double r25881 = r25879 * r25880;
return r25881;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25882 = phi1;
double r25883 = sin(r25882);
double r25884 = phi2;
double r25885 = sin(r25884);
double r25886 = r25883 * r25885;
double r25887 = cos(r25882);
double r25888 = cos(r25884);
double r25889 = lambda1;
double r25890 = cos(r25889);
double r25891 = lambda2;
double r25892 = cos(r25891);
double r25893 = r25890 * r25892;
double r25894 = sin(r25889);
double r25895 = -r25891;
double r25896 = sin(r25895);
double r25897 = r25894 * r25896;
double r25898 = r25893 - r25897;
double r25899 = r25888 * r25898;
double r25900 = r25887 * r25899;
double r25901 = 3.0;
double r25902 = pow(r25900, r25901);
double r25903 = cbrt(r25902);
double r25904 = r25886 + r25903;
double r25905 = acos(r25904);
double r25906 = R;
double r25907 = r25905 * r25906;
return r25907;
}



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 sub-neg16.8
Applied cos-sum3.8
Simplified3.8
rmApplied add-cbrt-cube3.9
Applied add-cbrt-cube4.0
Applied add-cbrt-cube4.0
Applied cbrt-unprod4.0
Applied cbrt-unprod4.0
Simplified4.0
Final simplification4.0
herbie shell --seed 2020062 +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))