\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\log \left(e^{\frac{\pi}{2} - \sin^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1680877 = phi1;
double r1680878 = sin(r1680877);
double r1680879 = phi2;
double r1680880 = sin(r1680879);
double r1680881 = r1680878 * r1680880;
double r1680882 = cos(r1680877);
double r1680883 = cos(r1680879);
double r1680884 = r1680882 * r1680883;
double r1680885 = lambda1;
double r1680886 = lambda2;
double r1680887 = r1680885 - r1680886;
double r1680888 = cos(r1680887);
double r1680889 = r1680884 * r1680888;
double r1680890 = r1680881 + r1680889;
double r1680891 = acos(r1680890);
double r1680892 = R;
double r1680893 = r1680891 * r1680892;
return r1680893;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1680894 = atan2(1.0, 0.0);
double r1680895 = 2.0;
double r1680896 = r1680894 / r1680895;
double r1680897 = phi2;
double r1680898 = cos(r1680897);
double r1680899 = phi1;
double r1680900 = cos(r1680899);
double r1680901 = r1680898 * r1680900;
double r1680902 = lambda1;
double r1680903 = sin(r1680902);
double r1680904 = lambda2;
double r1680905 = sin(r1680904);
double r1680906 = r1680903 * r1680905;
double r1680907 = cos(r1680902);
double r1680908 = cos(r1680904);
double r1680909 = r1680907 * r1680908;
double r1680910 = r1680906 + r1680909;
double r1680911 = r1680901 * r1680910;
double r1680912 = sin(r1680897);
double r1680913 = sin(r1680899);
double r1680914 = r1680912 * r1680913;
double r1680915 = r1680911 + r1680914;
double r1680916 = asin(r1680915);
double r1680917 = r1680896 - r1680916;
double r1680918 = exp(r1680917);
double r1680919 = log(r1680918);
double r1680920 = R;
double r1680921 = r1680919 * r1680920;
return r1680921;
}



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-diff4.0
rmApplied add-log-exp4.0
rmApplied acos-asin4.1
Final simplification4.1
herbie shell --seed 2019162
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))