\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_1 \cdot \sin \phi_2 + \left(\log \left(e^{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)}\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r35940 = phi1;
double r35941 = sin(r35940);
double r35942 = phi2;
double r35943 = sin(r35942);
double r35944 = r35941 * r35943;
double r35945 = cos(r35940);
double r35946 = cos(r35942);
double r35947 = r35945 * r35946;
double r35948 = lambda1;
double r35949 = lambda2;
double r35950 = r35948 - r35949;
double r35951 = cos(r35950);
double r35952 = r35947 * r35951;
double r35953 = r35944 + r35952;
double r35954 = acos(r35953);
double r35955 = R;
double r35956 = r35954 * r35955;
return r35956;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r35957 = phi1;
double r35958 = sin(r35957);
double r35959 = phi2;
double r35960 = sin(r35959);
double r35961 = r35958 * r35960;
double r35962 = cos(r35957);
double r35963 = cos(r35959);
double r35964 = r35962 * r35963;
double r35965 = lambda1;
double r35966 = cos(r35965);
double r35967 = lambda2;
double r35968 = cos(r35967);
double r35969 = r35966 * r35968;
double r35970 = r35964 * r35969;
double r35971 = exp(r35970);
double r35972 = log(r35971);
double r35973 = sin(r35965);
double r35974 = sin(r35967);
double r35975 = r35973 * r35974;
double r35976 = r35964 * r35975;
double r35977 = r35972 + r35976;
double r35978 = r35961 + r35977;
double r35979 = acos(r35978);
double r35980 = R;
double r35981 = r35979 * r35980;
return r35981;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied cos-diff3.7
Applied distribute-lft-in3.7
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019318
(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))