\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 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21694 = phi1;
double r21695 = sin(r21694);
double r21696 = phi2;
double r21697 = sin(r21696);
double r21698 = r21695 * r21697;
double r21699 = cos(r21694);
double r21700 = cos(r21696);
double r21701 = r21699 * r21700;
double r21702 = lambda1;
double r21703 = lambda2;
double r21704 = r21702 - r21703;
double r21705 = cos(r21704);
double r21706 = r21701 * r21705;
double r21707 = r21698 + r21706;
double r21708 = acos(r21707);
double r21709 = R;
double r21710 = r21708 * r21709;
return r21710;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21711 = phi1;
double r21712 = sin(r21711);
double r21713 = phi2;
double r21714 = sin(r21713);
double r21715 = r21712 * r21714;
double r21716 = cos(r21711);
double r21717 = cos(r21713);
double r21718 = r21716 * r21717;
double r21719 = lambda1;
double r21720 = cos(r21719);
double r21721 = lambda2;
double r21722 = cos(r21721);
double r21723 = r21720 * r21722;
double r21724 = sin(r21719);
double r21725 = sin(r21721);
double r21726 = r21724 * r21725;
double r21727 = 3.0;
double r21728 = pow(r21726, r21727);
double r21729 = cbrt(r21728);
double r21730 = r21723 + r21729;
double r21731 = r21718 * r21730;
double r21732 = r21715 + r21731;
double r21733 = acos(r21732);
double r21734 = R;
double r21735 = r21733 * r21734;
return r21735;
}



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 add-cbrt-cube3.9
Applied add-cbrt-cube3.9
Applied cbrt-unprod3.9
Simplified3.9
Final simplification3.9
herbie shell --seed 2019235
(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))