\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 + \frac{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1\right)}^{3} \cdot {\left(\cos \lambda_2\right)}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26848 = phi1;
double r26849 = sin(r26848);
double r26850 = phi2;
double r26851 = sin(r26850);
double r26852 = r26849 * r26851;
double r26853 = cos(r26848);
double r26854 = cos(r26850);
double r26855 = r26853 * r26854;
double r26856 = lambda1;
double r26857 = lambda2;
double r26858 = r26856 - r26857;
double r26859 = cos(r26858);
double r26860 = r26855 * r26859;
double r26861 = r26852 + r26860;
double r26862 = acos(r26861);
double r26863 = R;
double r26864 = r26862 * r26863;
return r26864;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26865 = phi1;
double r26866 = sin(r26865);
double r26867 = phi2;
double r26868 = sin(r26867);
double r26869 = r26866 * r26868;
double r26870 = cos(r26865);
double r26871 = cos(r26867);
double r26872 = r26870 * r26871;
double r26873 = lambda1;
double r26874 = cos(r26873);
double r26875 = 3.0;
double r26876 = pow(r26874, r26875);
double r26877 = lambda2;
double r26878 = cos(r26877);
double r26879 = pow(r26878, r26875);
double r26880 = r26876 * r26879;
double r26881 = sin(r26873);
double r26882 = sin(r26877);
double r26883 = r26881 * r26882;
double r26884 = pow(r26883, r26875);
double r26885 = r26880 + r26884;
double r26886 = r26872 * r26885;
double r26887 = r26874 * r26878;
double r26888 = r26887 * r26887;
double r26889 = r26883 * r26883;
double r26890 = r26887 * r26883;
double r26891 = r26889 - r26890;
double r26892 = r26888 + r26891;
double r26893 = r26886 / r26892;
double r26894 = r26869 + r26893;
double r26895 = acos(r26894);
double r26896 = R;
double r26897 = r26895 * r26896;
return r26897;
}



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 flip3-+4.0
Applied associate-*r/4.0
rmApplied unpow-prod-down4.0
Final simplification4.0
herbie shell --seed 2020083
(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))