\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 RR \cdot \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21885 = phi1;
double r21886 = sin(r21885);
double r21887 = phi2;
double r21888 = sin(r21887);
double r21889 = r21886 * r21888;
double r21890 = cos(r21885);
double r21891 = cos(r21887);
double r21892 = r21890 * r21891;
double r21893 = lambda1;
double r21894 = lambda2;
double r21895 = r21893 - r21894;
double r21896 = cos(r21895);
double r21897 = r21892 * r21896;
double r21898 = r21889 + r21897;
double r21899 = acos(r21898);
double r21900 = R;
double r21901 = r21899 * r21900;
return r21901;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21902 = R;
double r21903 = phi1;
double r21904 = sin(r21903);
double r21905 = phi2;
double r21906 = sin(r21905);
double r21907 = r21904 * r21906;
double r21908 = cos(r21903);
double r21909 = cos(r21905);
double r21910 = r21908 * r21909;
double r21911 = lambda1;
double r21912 = cos(r21911);
double r21913 = lambda2;
double r21914 = cos(r21913);
double r21915 = r21912 * r21914;
double r21916 = r21910 * r21915;
double r21917 = sin(r21911);
double r21918 = sin(r21913);
double r21919 = r21917 * r21918;
double r21920 = r21910 * r21919;
double r21921 = r21916 + r21920;
double r21922 = r21907 + r21921;
double r21923 = acos(r21922);
double r21924 = r21902 * r21923;
return r21924;
}



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
Applied distribute-lft-in3.8
rmApplied add-log-exp3.8
rmApplied add-exp-log3.8
Final simplification3.8
herbie shell --seed 2019298
(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))