\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 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r23990 = phi1;
double r23991 = sin(r23990);
double r23992 = phi2;
double r23993 = sin(r23992);
double r23994 = r23991 * r23993;
double r23995 = cos(r23990);
double r23996 = cos(r23992);
double r23997 = r23995 * r23996;
double r23998 = lambda1;
double r23999 = lambda2;
double r24000 = r23998 - r23999;
double r24001 = cos(r24000);
double r24002 = r23997 * r24001;
double r24003 = r23994 + r24002;
double r24004 = acos(r24003);
double r24005 = R;
double r24006 = r24004 * r24005;
return r24006;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r24007 = phi1;
double r24008 = sin(r24007);
double r24009 = phi2;
double r24010 = sin(r24009);
double r24011 = r24008 * r24010;
double r24012 = cos(r24007);
double r24013 = cos(r24009);
double r24014 = r24012 * r24013;
double r24015 = lambda1;
double r24016 = cos(r24015);
double r24017 = lambda2;
double r24018 = cos(r24017);
double r24019 = r24016 * r24018;
double r24020 = sin(r24015);
double r24021 = -r24017;
double r24022 = sin(r24021);
double r24023 = cbrt(r24022);
double r24024 = r24023 * r24023;
double r24025 = r24020 * r24024;
double r24026 = r24025 * r24023;
double r24027 = r24019 - r24026;
double r24028 = r24014 * r24027;
double r24029 = r24011 + r24028;
double r24030 = acos(r24029);
double r24031 = R;
double r24032 = r24030 * r24031;
return r24032;
}



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 sub-neg16.5
Applied cos-sum3.7
Simplified3.7
rmApplied add-cube-cbrt3.7
Applied associate-*r*3.7
Final simplification3.7
herbie shell --seed 2020042
(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))