\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 r351540 = phi1;
double r351541 = sin(r351540);
double r351542 = phi2;
double r351543 = sin(r351542);
double r351544 = r351541 * r351543;
double r351545 = cos(r351540);
double r351546 = cos(r351542);
double r351547 = r351545 * r351546;
double r351548 = lambda1;
double r351549 = lambda2;
double r351550 = r351548 - r351549;
double r351551 = cos(r351550);
double r351552 = r351547 * r351551;
double r351553 = r351544 + r351552;
double r351554 = acos(r351553);
double r351555 = R;
double r351556 = r351554 * r351555;
return r351556;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r351557 = R;
double r351558 = lambda2;
double r351559 = sin(r351558);
double r351560 = lambda1;
double r351561 = sin(r351560);
double r351562 = r351559 * r351561;
double r351563 = cbrt(r351562);
double r351564 = r351563 * r351563;
double r351565 = r351563 * r351564;
double r351566 = cos(r351558);
double r351567 = cos(r351560);
double r351568 = r351566 * r351567;
double r351569 = r351565 + r351568;
double r351570 = phi1;
double r351571 = cos(r351570);
double r351572 = phi2;
double r351573 = cos(r351572);
double r351574 = r351571 * r351573;
double r351575 = r351569 * r351574;
double r351576 = sin(r351572);
double r351577 = sin(r351570);
double r351578 = r351576 * r351577;
double r351579 = r351575 + r351578;
double r351580 = acos(r351579);
double r351581 = r351557 * r351580;
return r351581;
}



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-diff4.0
rmApplied add-cube-cbrt4.1
Final simplification4.1
herbie shell --seed 2019154 +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))