\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 Re^{\log \left(\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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)\right)}\right)\right)} \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22636 = phi1;
double r22637 = sin(r22636);
double r22638 = phi2;
double r22639 = sin(r22638);
double r22640 = r22637 * r22639;
double r22641 = cos(r22636);
double r22642 = cos(r22638);
double r22643 = r22641 * r22642;
double r22644 = lambda1;
double r22645 = lambda2;
double r22646 = r22644 - r22645;
double r22647 = cos(r22646);
double r22648 = r22643 * r22647;
double r22649 = r22640 + r22648;
double r22650 = acos(r22649);
double r22651 = R;
double r22652 = r22650 * r22651;
return r22652;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22653 = phi1;
double r22654 = sin(r22653);
double r22655 = phi2;
double r22656 = sin(r22655);
double r22657 = r22654 * r22656;
double r22658 = cos(r22653);
double r22659 = cos(r22655);
double r22660 = r22658 * r22659;
double r22661 = lambda1;
double r22662 = cos(r22661);
double r22663 = lambda2;
double r22664 = cos(r22663);
double r22665 = r22662 * r22664;
double r22666 = sin(r22661);
double r22667 = sin(r22663);
double r22668 = r22666 * r22667;
double r22669 = r22665 + r22668;
double r22670 = r22660 * r22669;
double r22671 = r22657 + r22670;
double r22672 = acos(r22671);
double r22673 = exp(r22672);
double r22674 = log(r22673);
double r22675 = log(r22674);
double r22676 = exp(r22675);
double r22677 = R;
double r22678 = r22676 * r22677;
return r22678;
}



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.7
rmApplied add-exp-log3.7
rmApplied add-log-exp3.7
Final simplification3.7
herbie shell --seed 2019354
(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))