\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_2 \cdot \sin \phi_1 + \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21801 = phi1;
double r21802 = sin(r21801);
double r21803 = phi2;
double r21804 = sin(r21803);
double r21805 = r21802 * r21804;
double r21806 = cos(r21801);
double r21807 = cos(r21803);
double r21808 = r21806 * r21807;
double r21809 = lambda1;
double r21810 = lambda2;
double r21811 = r21809 - r21810;
double r21812 = cos(r21811);
double r21813 = r21808 * r21812;
double r21814 = r21805 + r21813;
double r21815 = acos(r21814);
double r21816 = R;
double r21817 = r21815 * r21816;
return r21817;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21818 = phi2;
double r21819 = sin(r21818);
double r21820 = phi1;
double r21821 = sin(r21820);
double r21822 = r21819 * r21821;
double r21823 = lambda2;
double r21824 = cos(r21823);
double r21825 = lambda1;
double r21826 = cos(r21825);
double r21827 = r21824 * r21826;
double r21828 = sin(r21823);
double r21829 = sin(r21825);
double r21830 = r21828 * r21829;
double r21831 = cbrt(r21830);
double r21832 = r21831 * r21831;
double r21833 = r21831 * r21832;
double r21834 = r21827 + r21833;
double r21835 = cos(r21820);
double r21836 = cos(r21818);
double r21837 = r21835 * r21836;
double r21838 = r21834 * r21837;
double r21839 = r21822 + r21838;
double r21840 = acos(r21839);
double r21841 = R;
double r21842 = r21840 * r21841;
return r21842;
}



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
Simplified16.5
rmApplied cos-diff3.6
Simplified3.6
rmApplied add-cube-cbrt3.7
Simplified3.7
Simplified3.7
Final simplification3.7
herbie shell --seed 2019194
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))