\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\left(\frac{\pi}{2} - \sin^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) + \left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1933269 = phi1;
double r1933270 = sin(r1933269);
double r1933271 = phi2;
double r1933272 = sin(r1933271);
double r1933273 = r1933270 * r1933272;
double r1933274 = cos(r1933269);
double r1933275 = cos(r1933271);
double r1933276 = r1933274 * r1933275;
double r1933277 = lambda1;
double r1933278 = lambda2;
double r1933279 = r1933277 - r1933278;
double r1933280 = cos(r1933279);
double r1933281 = r1933276 * r1933280;
double r1933282 = r1933273 + r1933281;
double r1933283 = acos(r1933282);
double r1933284 = R;
double r1933285 = r1933283 * r1933284;
return r1933285;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1933286 = atan2(1.0, 0.0);
double r1933287 = 2.0;
double r1933288 = r1933286 / r1933287;
double r1933289 = phi2;
double r1933290 = sin(r1933289);
double r1933291 = phi1;
double r1933292 = sin(r1933291);
double r1933293 = r1933290 * r1933292;
double r1933294 = cos(r1933289);
double r1933295 = cos(r1933291);
double r1933296 = r1933294 * r1933295;
double r1933297 = lambda2;
double r1933298 = sin(r1933297);
double r1933299 = lambda1;
double r1933300 = sin(r1933299);
double r1933301 = r1933298 * r1933300;
double r1933302 = r1933296 * r1933301;
double r1933303 = cos(r1933297);
double r1933304 = cos(r1933299);
double r1933305 = r1933303 * r1933304;
double r1933306 = r1933296 * r1933305;
double r1933307 = r1933302 + r1933306;
double r1933308 = r1933293 + r1933307;
double r1933309 = asin(r1933308);
double r1933310 = r1933288 - r1933309;
double r1933311 = R;
double r1933312 = r1933310 * r1933311;
return r1933312;
}



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.8
rmApplied distribute-rgt-in3.8
rmApplied acos-asin3.9
Final simplification3.9
herbie shell --seed 2019121
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))