\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 + \frac{\cos \phi_2 \cdot \cos \phi_1}{\frac{\left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r678801 = phi1;
double r678802 = sin(r678801);
double r678803 = phi2;
double r678804 = sin(r678803);
double r678805 = r678802 * r678804;
double r678806 = cos(r678801);
double r678807 = cos(r678803);
double r678808 = r678806 * r678807;
double r678809 = lambda1;
double r678810 = lambda2;
double r678811 = r678809 - r678810;
double r678812 = cos(r678811);
double r678813 = r678808 * r678812;
double r678814 = r678805 + r678813;
double r678815 = acos(r678814);
double r678816 = R;
double r678817 = r678815 * r678816;
return r678817;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r678818 = phi2;
double r678819 = sin(r678818);
double r678820 = phi1;
double r678821 = sin(r678820);
double r678822 = r678819 * r678821;
double r678823 = cos(r678818);
double r678824 = cos(r678820);
double r678825 = r678823 * r678824;
double r678826 = lambda2;
double r678827 = sin(r678826);
double r678828 = lambda1;
double r678829 = sin(r678828);
double r678830 = r678827 * r678829;
double r678831 = r678830 * r678830;
double r678832 = cos(r678826);
double r678833 = cos(r678828);
double r678834 = r678832 * r678833;
double r678835 = r678834 * r678830;
double r678836 = r678831 - r678835;
double r678837 = r678834 * r678834;
double r678838 = r678836 + r678837;
double r678839 = r678830 * r678831;
double r678840 = r678837 * r678834;
double r678841 = r678839 + r678840;
double r678842 = r678838 / r678841;
double r678843 = r678825 / r678842;
double r678844 = r678822 + r678843;
double r678845 = acos(r678844);
double r678846 = R;
double r678847 = r678845 * r678846;
return r678847;
}



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-diff4.1
rmApplied flip3-+4.1
Applied associate-*r/4.1
Simplified4.1
rmApplied associate-/l*4.1
Final simplification4.1
herbie shell --seed 2019153
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))