\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(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)\right)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r24936 = phi1;
double r24937 = sin(r24936);
double r24938 = phi2;
double r24939 = sin(r24938);
double r24940 = r24937 * r24939;
double r24941 = cos(r24936);
double r24942 = cos(r24938);
double r24943 = r24941 * r24942;
double r24944 = lambda1;
double r24945 = lambda2;
double r24946 = r24944 - r24945;
double r24947 = cos(r24946);
double r24948 = r24943 * r24947;
double r24949 = r24940 + r24948;
double r24950 = acos(r24949);
double r24951 = R;
double r24952 = r24950 * r24951;
return r24952;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r24953 = R;
double r24954 = phi1;
double r24955 = sin(r24954);
double r24956 = phi2;
double r24957 = sin(r24956);
double r24958 = r24955 * r24957;
double r24959 = cos(r24954);
double r24960 = cos(r24956);
double r24961 = r24959 * r24960;
double r24962 = lambda1;
double r24963 = cos(r24962);
double r24964 = lambda2;
double r24965 = cos(r24964);
double r24966 = r24963 * r24965;
double r24967 = r24961 * r24966;
double r24968 = sin(r24962);
double r24969 = sin(r24964);
double r24970 = r24968 * r24969;
double r24971 = r24961 * r24970;
double r24972 = r24967 + r24971;
double r24973 = r24958 + r24972;
double r24974 = acos(r24973);
double r24975 = exp(r24974);
double r24976 = log(r24975);
double r24977 = r24953 * r24976;
return r24977;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.1
rmApplied cos-diff3.9
Applied distribute-lft-in3.9
rmApplied add-log-exp3.9
rmApplied *-commutative3.9
Final simplification3.9
herbie shell --seed 2020089 +o rules:numerics
(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))