\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} - \frac{\frac{\pi}{2} \cdot \frac{\pi}{2} - \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 \left(-\lambda_2\right)\right)\right) \cdot \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 \left(-\lambda_2\right)\right)\right)}{\frac{\pi}{2} + \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 \left(-\lambda_2\right)\right)\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r30499 = phi1;
double r30500 = sin(r30499);
double r30501 = phi2;
double r30502 = sin(r30501);
double r30503 = r30500 * r30502;
double r30504 = cos(r30499);
double r30505 = cos(r30501);
double r30506 = r30504 * r30505;
double r30507 = lambda1;
double r30508 = lambda2;
double r30509 = r30507 - r30508;
double r30510 = cos(r30509);
double r30511 = r30506 * r30510;
double r30512 = r30503 + r30511;
double r30513 = acos(r30512);
double r30514 = R;
double r30515 = r30513 * r30514;
return r30515;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r30516 = atan2(1.0, 0.0);
double r30517 = 2.0;
double r30518 = r30516 / r30517;
double r30519 = r30518 * r30518;
double r30520 = phi1;
double r30521 = sin(r30520);
double r30522 = phi2;
double r30523 = sin(r30522);
double r30524 = r30521 * r30523;
double r30525 = cos(r30520);
double r30526 = cos(r30522);
double r30527 = r30525 * r30526;
double r30528 = lambda1;
double r30529 = cos(r30528);
double r30530 = lambda2;
double r30531 = cos(r30530);
double r30532 = r30529 * r30531;
double r30533 = sin(r30528);
double r30534 = -r30530;
double r30535 = sin(r30534);
double r30536 = r30533 * r30535;
double r30537 = r30532 - r30536;
double r30538 = r30527 * r30537;
double r30539 = r30524 + r30538;
double r30540 = acos(r30539);
double r30541 = r30540 * r30540;
double r30542 = r30519 - r30541;
double r30543 = r30518 + r30540;
double r30544 = r30542 / r30543;
double r30545 = r30518 - r30544;
double r30546 = R;
double r30547 = r30545 * r30546;
return r30547;
}



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 sub-neg16.8
Applied cos-sum3.6
Simplified3.6
rmApplied acos-asin3.7
rmApplied asin-acos3.6
rmApplied flip--3.6
Final simplification3.6
herbie shell --seed 2020056
(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))