\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 RR \cdot \log \left(e^{\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22805 = phi1;
double r22806 = sin(r22805);
double r22807 = phi2;
double r22808 = sin(r22807);
double r22809 = r22806 * r22808;
double r22810 = cos(r22805);
double r22811 = cos(r22807);
double r22812 = r22810 * r22811;
double r22813 = lambda1;
double r22814 = lambda2;
double r22815 = r22813 - r22814;
double r22816 = cos(r22815);
double r22817 = r22812 * r22816;
double r22818 = r22809 + r22817;
double r22819 = acos(r22818);
double r22820 = R;
double r22821 = r22819 * r22820;
return r22821;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22822 = R;
double r22823 = phi1;
double r22824 = sin(r22823);
double r22825 = phi2;
double r22826 = sin(r22825);
double r22827 = r22824 * r22826;
double r22828 = cos(r22823);
double r22829 = cos(r22825);
double r22830 = r22828 * r22829;
double r22831 = lambda1;
double r22832 = cos(r22831);
double r22833 = lambda2;
double r22834 = cos(r22833);
double r22835 = r22832 * r22834;
double r22836 = sin(r22831);
double r22837 = sin(r22833);
double r22838 = r22836 * r22837;
double r22839 = r22835 + r22838;
double r22840 = r22830 * r22839;
double r22841 = r22827 + r22840;
double r22842 = acos(r22841);
double r22843 = exp(r22842);
double r22844 = log(r22843);
double r22845 = r22822 * r22844;
return r22845;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.2
rmApplied cos-diff3.8
rmApplied add-log-exp3.9
rmApplied acos-asin3.9
rmApplied asin-acos3.9
Applied associate--r-3.9
Simplified3.9
Final simplification3.9
herbie shell --seed 2019306
(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))