\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(\left(\log \left(e^{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1169928 = phi1;
double r1169929 = sin(r1169928);
double r1169930 = phi2;
double r1169931 = sin(r1169930);
double r1169932 = r1169929 * r1169931;
double r1169933 = cos(r1169928);
double r1169934 = cos(r1169930);
double r1169935 = r1169933 * r1169934;
double r1169936 = lambda1;
double r1169937 = lambda2;
double r1169938 = r1169936 - r1169937;
double r1169939 = cos(r1169938);
double r1169940 = r1169935 * r1169939;
double r1169941 = r1169932 + r1169940;
double r1169942 = acos(r1169941);
double r1169943 = R;
double r1169944 = r1169942 * r1169943;
return r1169944;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1169945 = lambda1;
double r1169946 = sin(r1169945);
double r1169947 = lambda2;
double r1169948 = sin(r1169947);
double r1169949 = r1169946 * r1169948;
double r1169950 = phi1;
double r1169951 = cos(r1169950);
double r1169952 = phi2;
double r1169953 = cos(r1169952);
double r1169954 = r1169951 * r1169953;
double r1169955 = r1169949 * r1169954;
double r1169956 = exp(r1169955);
double r1169957 = log(r1169956);
double r1169958 = cos(r1169947);
double r1169959 = r1169954 * r1169958;
double r1169960 = cos(r1169945);
double r1169961 = r1169959 * r1169960;
double r1169962 = r1169957 + r1169961;
double r1169963 = sin(r1169952);
double r1169964 = sin(r1169950);
double r1169965 = r1169963 * r1169964;
double r1169966 = r1169962 + r1169965;
double r1169967 = acos(r1169966);
double r1169968 = R;
double r1169969 = r1169967 * r1169968;
return r1169969;
}



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.0
Applied distribute-rgt-in4.0
rmApplied associate-*l*4.0
rmApplied add-log-exp4.0
Final simplification4.0
herbie shell --seed 2019200
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))