\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} - \left(\frac{\pi}{2} - \cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1118360 = phi1;
double r1118361 = sin(r1118360);
double r1118362 = phi2;
double r1118363 = sin(r1118362);
double r1118364 = r1118361 * r1118363;
double r1118365 = cos(r1118360);
double r1118366 = cos(r1118362);
double r1118367 = r1118365 * r1118366;
double r1118368 = lambda1;
double r1118369 = lambda2;
double r1118370 = r1118368 - r1118369;
double r1118371 = cos(r1118370);
double r1118372 = r1118367 * r1118371;
double r1118373 = r1118364 + r1118372;
double r1118374 = acos(r1118373);
double r1118375 = R;
double r1118376 = r1118374 * r1118375;
return r1118376;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1118377 = atan2(1.0, 0.0);
double r1118378 = 2.0;
double r1118379 = r1118377 / r1118378;
double r1118380 = phi1;
double r1118381 = cos(r1118380);
double r1118382 = phi2;
double r1118383 = cos(r1118382);
double r1118384 = r1118381 * r1118383;
double r1118385 = lambda2;
double r1118386 = cos(r1118385);
double r1118387 = lambda1;
double r1118388 = cos(r1118387);
double r1118389 = r1118386 * r1118388;
double r1118390 = sin(r1118385);
double r1118391 = sin(r1118387);
double r1118392 = r1118390 * r1118391;
double r1118393 = r1118389 + r1118392;
double r1118394 = r1118384 * r1118393;
double r1118395 = sin(r1118382);
double r1118396 = sin(r1118380);
double r1118397 = r1118395 * r1118396;
double r1118398 = r1118394 + r1118397;
double r1118399 = acos(r1118398);
double r1118400 = r1118379 - r1118399;
double r1118401 = r1118379 - r1118400;
double r1118402 = R;
double r1118403 = r1118401 * r1118402;
return r1118403;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.1
rmApplied cos-diff4.0
rmApplied add-log-exp4.0
rmApplied acos-asin4.1
Applied exp-diff4.1
Applied log-div4.1
Simplified4.1
Simplified4.1
rmApplied asin-acos4.0
Final simplification4.0
herbie shell --seed 2019134
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))