\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(\sin \phi_1 \cdot \sin \phi_2 + \cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)\right) - \sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21849 = phi1;
double r21850 = sin(r21849);
double r21851 = phi2;
double r21852 = sin(r21851);
double r21853 = r21850 * r21852;
double r21854 = cos(r21849);
double r21855 = cos(r21851);
double r21856 = r21854 * r21855;
double r21857 = lambda1;
double r21858 = lambda2;
double r21859 = r21857 - r21858;
double r21860 = cos(r21859);
double r21861 = r21856 * r21860;
double r21862 = r21853 + r21861;
double r21863 = acos(r21862);
double r21864 = R;
double r21865 = r21863 * r21864;
return r21865;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21866 = phi1;
double r21867 = sin(r21866);
double r21868 = phi2;
double r21869 = sin(r21868);
double r21870 = r21867 * r21869;
double r21871 = lambda1;
double r21872 = cos(r21871);
double r21873 = cos(r21866);
double r21874 = cos(r21868);
double r21875 = lambda2;
double r21876 = cos(r21875);
double r21877 = r21874 * r21876;
double r21878 = r21873 * r21877;
double r21879 = r21872 * r21878;
double r21880 = r21870 + r21879;
double r21881 = sin(r21871);
double r21882 = -1.0;
double r21883 = r21882 * r21875;
double r21884 = sin(r21883);
double r21885 = r21874 * r21884;
double r21886 = r21873 * r21885;
double r21887 = r21881 * r21886;
double r21888 = r21880 - r21887;
double r21889 = acos(r21888);
double r21890 = R;
double r21891 = r21889 * r21890;
return r21891;
}



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 sub-neg16.7
Applied cos-sum3.9
Simplified3.9
rmApplied add-cube-cbrt4.0
Applied associate-*l*4.0
Taylor expanded around 0 3.9
Simplified3.9
Final simplification3.9
herbie shell --seed 2020034
(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))