\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\left(\frac{\pi}{2} - \sin^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r34911 = phi1;
double r34912 = sin(r34911);
double r34913 = phi2;
double r34914 = sin(r34913);
double r34915 = r34912 * r34914;
double r34916 = cos(r34911);
double r34917 = cos(r34913);
double r34918 = r34916 * r34917;
double r34919 = lambda1;
double r34920 = lambda2;
double r34921 = r34919 - r34920;
double r34922 = cos(r34921);
double r34923 = r34918 * r34922;
double r34924 = r34915 + r34923;
double r34925 = acos(r34924);
double r34926 = R;
double r34927 = r34925 * r34926;
return r34927;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r34928 = atan2(1.0, 0.0);
double r34929 = 2.0;
double r34930 = r34928 / r34929;
double r34931 = phi1;
double r34932 = cos(r34931);
double r34933 = phi2;
double r34934 = cos(r34933);
double r34935 = r34932 * r34934;
double r34936 = lambda1;
double r34937 = cos(r34936);
double r34938 = lambda2;
double r34939 = cos(r34938);
double r34940 = r34937 * r34939;
double r34941 = sin(r34936);
double r34942 = sin(r34938);
double r34943 = r34941 * r34942;
double r34944 = r34940 + r34943;
double r34945 = r34935 * r34944;
double r34946 = sin(r34931);
double r34947 = sin(r34933);
double r34948 = r34946 * r34947;
double r34949 = r34945 + r34948;
double r34950 = asin(r34949);
double r34951 = r34930 - r34950;
double r34952 = R;
double r34953 = r34951 * r34952;
return r34953;
}



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 sub-neg16.9
Applied cos-sum3.7
Simplified3.7
rmApplied acos-asin3.8
Simplified3.8
Final simplification3.8
herbie shell --seed 2020046
(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))