\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} - \left(\frac{\pi}{2} - \cos^{-1} \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1608703 = phi1;
double r1608704 = sin(r1608703);
double r1608705 = phi2;
double r1608706 = sin(r1608705);
double r1608707 = r1608704 * r1608706;
double r1608708 = cos(r1608703);
double r1608709 = cos(r1608705);
double r1608710 = r1608708 * r1608709;
double r1608711 = lambda1;
double r1608712 = lambda2;
double r1608713 = r1608711 - r1608712;
double r1608714 = cos(r1608713);
double r1608715 = r1608710 * r1608714;
double r1608716 = r1608707 + r1608715;
double r1608717 = acos(r1608716);
double r1608718 = R;
double r1608719 = r1608717 * r1608718;
return r1608719;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1608720 = atan2(1.0, 0.0);
double r1608721 = 2.0;
double r1608722 = r1608720 / r1608721;
double r1608723 = phi1;
double r1608724 = cos(r1608723);
double r1608725 = phi2;
double r1608726 = cos(r1608725);
double r1608727 = lambda2;
double r1608728 = sin(r1608727);
double r1608729 = lambda1;
double r1608730 = sin(r1608729);
double r1608731 = r1608728 * r1608730;
double r1608732 = cos(r1608729);
double r1608733 = cos(r1608727);
double r1608734 = r1608732 * r1608733;
double r1608735 = r1608731 + r1608734;
double r1608736 = r1608726 * r1608735;
double r1608737 = r1608724 * r1608736;
double r1608738 = sin(r1608725);
double r1608739 = sin(r1608723);
double r1608740 = r1608738 * r1608739;
double r1608741 = r1608737 + r1608740;
double r1608742 = acos(r1608741);
double r1608743 = r1608722 - r1608742;
double r1608744 = r1608722 - r1608743;
double r1608745 = R;
double r1608746 = r1608744 * r1608745;
return r1608746;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.2
rmApplied cos-diff3.9
Taylor expanded around inf 3.9
rmApplied acos-asin3.9
rmApplied asin-acos3.9
Final simplification3.9
herbie shell --seed 2019120
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))