\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(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r729561 = phi1;
double r729562 = sin(r729561);
double r729563 = phi2;
double r729564 = sin(r729563);
double r729565 = r729562 * r729564;
double r729566 = cos(r729561);
double r729567 = cos(r729563);
double r729568 = r729566 * r729567;
double r729569 = lambda1;
double r729570 = lambda2;
double r729571 = r729569 - r729570;
double r729572 = cos(r729571);
double r729573 = r729568 * r729572;
double r729574 = r729565 + r729573;
double r729575 = acos(r729574);
double r729576 = R;
double r729577 = r729575 * r729576;
return r729577;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r729578 = R;
double r729579 = lambda2;
double r729580 = sin(r729579);
double r729581 = lambda1;
double r729582 = sin(r729581);
double r729583 = r729580 * r729582;
double r729584 = cbrt(r729583);
double r729585 = r729584 * r729584;
double r729586 = r729584 * r729585;
double r729587 = cos(r729579);
double r729588 = cos(r729581);
double r729589 = r729587 * r729588;
double r729590 = r729586 + r729589;
double r729591 = phi1;
double r729592 = cos(r729591);
double r729593 = phi2;
double r729594 = cos(r729593);
double r729595 = r729592 * r729594;
double r729596 = r729590 * r729595;
double r729597 = sin(r729593);
double r729598 = sin(r729591);
double r729599 = r729597 * r729598;
double r729600 = r729596 + r729599;
double r729601 = acos(r729600);
double r729602 = r729578 * r729601;
return r729602;
}



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 cos-diff3.7
rmApplied add-cube-cbrt3.8
Final simplification3.8
herbie shell --seed 2019133 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))