\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 RR \cdot \cos^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) + \sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_2 \cdot \sin \phi_1\right)\right)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r865518 = phi1;
double r865519 = sin(r865518);
double r865520 = phi2;
double r865521 = sin(r865520);
double r865522 = r865519 * r865521;
double r865523 = cos(r865518);
double r865524 = cos(r865520);
double r865525 = r865523 * r865524;
double r865526 = lambda1;
double r865527 = lambda2;
double r865528 = r865526 - r865527;
double r865529 = cos(r865528);
double r865530 = r865525 * r865529;
double r865531 = r865522 + r865530;
double r865532 = acos(r865531);
double r865533 = R;
double r865534 = r865532 * r865533;
return r865534;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r865535 = R;
double r865536 = phi2;
double r865537 = cos(r865536);
double r865538 = phi1;
double r865539 = cos(r865538);
double r865540 = r865537 * r865539;
double r865541 = lambda1;
double r865542 = sin(r865541);
double r865543 = lambda2;
double r865544 = sin(r865543);
double r865545 = r865542 * r865544;
double r865546 = cos(r865541);
double r865547 = cos(r865543);
double r865548 = r865546 * r865547;
double r865549 = r865545 + r865548;
double r865550 = r865540 * r865549;
double r865551 = sin(r865536);
double r865552 = sin(r865538);
double r865553 = r865551 * r865552;
double r865554 = r865553 * r865553;
double r865555 = r865553 * r865554;
double r865556 = cbrt(r865555);
double r865557 = r865550 + r865556;
double r865558 = acos(r865557);
double r865559 = r865535 * r865558;
return r865559;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.0
rmApplied cos-diff3.9
rmApplied add-cbrt-cube3.9
Final simplification3.9
herbie shell --seed 2019138
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))