\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} - \sin^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26677 = phi1;
double r26678 = sin(r26677);
double r26679 = phi2;
double r26680 = sin(r26679);
double r26681 = r26678 * r26680;
double r26682 = cos(r26677);
double r26683 = cos(r26679);
double r26684 = r26682 * r26683;
double r26685 = lambda1;
double r26686 = lambda2;
double r26687 = r26685 - r26686;
double r26688 = cos(r26687);
double r26689 = r26684 * r26688;
double r26690 = r26681 + r26689;
double r26691 = acos(r26690);
double r26692 = R;
double r26693 = r26691 * r26692;
return r26693;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26694 = atan2(1.0, 0.0);
double r26695 = 2.0;
double r26696 = r26694 / r26695;
double r26697 = phi1;
double r26698 = cos(r26697);
double r26699 = phi2;
double r26700 = cos(r26699);
double r26701 = r26698 * r26700;
double r26702 = lambda1;
double r26703 = cos(r26702);
double r26704 = lambda2;
double r26705 = cos(r26704);
double r26706 = r26703 * r26705;
double r26707 = sin(r26702);
double r26708 = sin(r26704);
double r26709 = r26707 * r26708;
double r26710 = r26706 + r26709;
double r26711 = r26701 * r26710;
double r26712 = sin(r26697);
double r26713 = sin(r26699);
double r26714 = r26712 * r26713;
double r26715 = r26711 + r26714;
double r26716 = asin(r26715);
double r26717 = r26696 - r26716;
double r26718 = R;
double r26719 = r26717 * r26718;
return r26719;
}



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-diff4.1
Applied distribute-lft-in4.1
Simplified4.1
Simplified4.1
rmApplied acos-asin4.2
Simplified4.2
Final simplification4.2
herbie shell --seed 2019326
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
:precision binary64
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))