\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(\sqrt[3]{{\left(\sin \phi_1 \cdot \sin \phi_2\right)}^{3}} + \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 \left(-\lambda_2\right)\right)}^{3}}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r24681 = phi1;
double r24682 = sin(r24681);
double r24683 = phi2;
double r24684 = sin(r24683);
double r24685 = r24682 * r24684;
double r24686 = cos(r24681);
double r24687 = cos(r24683);
double r24688 = r24686 * r24687;
double r24689 = lambda1;
double r24690 = lambda2;
double r24691 = r24689 - r24690;
double r24692 = cos(r24691);
double r24693 = r24688 * r24692;
double r24694 = r24685 + r24693;
double r24695 = acos(r24694);
double r24696 = R;
double r24697 = r24695 * r24696;
return r24697;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r24698 = phi1;
double r24699 = sin(r24698);
double r24700 = phi2;
double r24701 = sin(r24700);
double r24702 = r24699 * r24701;
double r24703 = 3.0;
double r24704 = pow(r24702, r24703);
double r24705 = cbrt(r24704);
double r24706 = cos(r24698);
double r24707 = cos(r24700);
double r24708 = r24706 * r24707;
double r24709 = lambda1;
double r24710 = cos(r24709);
double r24711 = lambda2;
double r24712 = cos(r24711);
double r24713 = r24710 * r24712;
double r24714 = sin(r24709);
double r24715 = -r24711;
double r24716 = sin(r24715);
double r24717 = r24714 * r24716;
double r24718 = pow(r24717, r24703);
double r24719 = cbrt(r24718);
double r24720 = r24713 - r24719;
double r24721 = r24708 * r24720;
double r24722 = r24705 + r24721;
double r24723 = acos(r24722);
double r24724 = R;
double r24725 = r24723 * r24724;
return r24725;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.3
rmApplied sub-neg17.3
Applied cos-sum4.1
Simplified4.1
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.1
Simplified4.1
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.1
Simplified4.1
Final simplification4.1
herbie shell --seed 2020047
(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))