\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\log \left(e^{e^{\log \left(\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)}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22045 = phi1;
double r22046 = sin(r22045);
double r22047 = phi2;
double r22048 = sin(r22047);
double r22049 = r22046 * r22048;
double r22050 = cos(r22045);
double r22051 = cos(r22047);
double r22052 = r22050 * r22051;
double r22053 = lambda1;
double r22054 = lambda2;
double r22055 = r22053 - r22054;
double r22056 = cos(r22055);
double r22057 = r22052 * r22056;
double r22058 = r22049 + r22057;
double r22059 = acos(r22058);
double r22060 = R;
double r22061 = r22059 * r22060;
return r22061;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22062 = phi1;
double r22063 = sin(r22062);
double r22064 = phi2;
double r22065 = sin(r22064);
double r22066 = r22063 * r22065;
double r22067 = cos(r22062);
double r22068 = cos(r22064);
double r22069 = r22067 * r22068;
double r22070 = lambda1;
double r22071 = cos(r22070);
double r22072 = lambda2;
double r22073 = cos(r22072);
double r22074 = r22071 * r22073;
double r22075 = sin(r22070);
double r22076 = sin(r22072);
double r22077 = r22075 * r22076;
double r22078 = r22074 + r22077;
double r22079 = r22069 * r22078;
double r22080 = r22066 + r22079;
double r22081 = acos(r22080);
double r22082 = log(r22081);
double r22083 = exp(r22082);
double r22084 = exp(r22083);
double r22085 = log(r22084);
double r22086 = R;
double r22087 = r22085 * r22086;
return r22087;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied cos-diff3.7
rmApplied add-log-exp3.7
rmApplied add-exp-log3.8
Final simplification3.8
herbie shell --seed 2019208
(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))