\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]{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\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 r1074559 = phi1;
double r1074560 = sin(r1074559);
double r1074561 = phi2;
double r1074562 = sin(r1074561);
double r1074563 = r1074560 * r1074562;
double r1074564 = cos(r1074559);
double r1074565 = cos(r1074561);
double r1074566 = r1074564 * r1074565;
double r1074567 = lambda1;
double r1074568 = lambda2;
double r1074569 = r1074567 - r1074568;
double r1074570 = cos(r1074569);
double r1074571 = r1074566 * r1074570;
double r1074572 = r1074563 + r1074571;
double r1074573 = acos(r1074572);
double r1074574 = R;
double r1074575 = r1074573 * r1074574;
return r1074575;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1074576 = R;
double r1074577 = lambda2;
double r1074578 = sin(r1074577);
double r1074579 = lambda1;
double r1074580 = sin(r1074579);
double r1074581 = r1074578 * r1074580;
double r1074582 = r1074581 * r1074581;
double r1074583 = r1074581 * r1074582;
double r1074584 = cbrt(r1074583);
double r1074585 = cos(r1074577);
double r1074586 = cos(r1074579);
double r1074587 = r1074585 * r1074586;
double r1074588 = r1074584 + r1074587;
double r1074589 = phi1;
double r1074590 = cos(r1074589);
double r1074591 = phi2;
double r1074592 = cos(r1074591);
double r1074593 = r1074590 * r1074592;
double r1074594 = r1074588 * r1074593;
double r1074595 = sin(r1074591);
double r1074596 = sin(r1074589);
double r1074597 = r1074595 * r1074596;
double r1074598 = r1074594 + r1074597;
double r1074599 = acos(r1074598);
double r1074600 = r1074576 * r1074599;
return r1074600;
}



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-cbrt-cube4.0
Applied add-cbrt-cube4.0
Applied cbrt-unprod4.0
Simplified4.0
Final simplification4.0
herbie shell --seed 2019146
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))