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



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))