\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^{\cos^{-1} \left(\cos \phi_2 \cdot \left(\cos \phi_1 \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r869228 = phi1;
double r869229 = sin(r869228);
double r869230 = phi2;
double r869231 = sin(r869230);
double r869232 = r869229 * r869231;
double r869233 = cos(r869228);
double r869234 = cos(r869230);
double r869235 = r869233 * r869234;
double r869236 = lambda1;
double r869237 = lambda2;
double r869238 = r869236 - r869237;
double r869239 = cos(r869238);
double r869240 = r869235 * r869239;
double r869241 = r869232 + r869240;
double r869242 = acos(r869241);
double r869243 = R;
double r869244 = r869242 * r869243;
return r869244;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r869245 = phi2;
double r869246 = cos(r869245);
double r869247 = phi1;
double r869248 = cos(r869247);
double r869249 = lambda1;
double r869250 = sin(r869249);
double r869251 = lambda2;
double r869252 = sin(r869251);
double r869253 = r869250 * r869252;
double r869254 = cos(r869249);
double r869255 = cos(r869251);
double r869256 = r869254 * r869255;
double r869257 = r869253 + r869256;
double r869258 = r869248 * r869257;
double r869259 = r869246 * r869258;
double r869260 = sin(r869245);
double r869261 = sin(r869247);
double r869262 = r869260 * r869261;
double r869263 = r869259 + r869262;
double r869264 = acos(r869263);
double r869265 = exp(r869264);
double r869266 = log(r869265);
double r869267 = R;
double r869268 = r869266 * r869267;
return r869268;
}



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-diff3.6
rmApplied add-log-exp3.7
rmApplied add-log-exp3.7
Simplified3.7
Final simplification3.7
herbie shell --seed 2019174
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))