\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\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \log \left(e^{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r23676 = phi1;
double r23677 = sin(r23676);
double r23678 = phi2;
double r23679 = sin(r23678);
double r23680 = r23677 * r23679;
double r23681 = cos(r23676);
double r23682 = cos(r23678);
double r23683 = r23681 * r23682;
double r23684 = lambda1;
double r23685 = lambda2;
double r23686 = r23684 - r23685;
double r23687 = cos(r23686);
double r23688 = r23683 * r23687;
double r23689 = r23680 + r23688;
double r23690 = acos(r23689);
double r23691 = R;
double r23692 = r23690 * r23691;
return r23692;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r23693 = phi1;
double r23694 = sin(r23693);
double r23695 = phi2;
double r23696 = sin(r23695);
double r23697 = r23694 * r23696;
double r23698 = lambda1;
double r23699 = cos(r23698);
double r23700 = lambda2;
double r23701 = cos(r23700);
double r23702 = r23699 * r23701;
double r23703 = cos(r23693);
double r23704 = cos(r23695);
double r23705 = r23703 * r23704;
double r23706 = r23702 * r23705;
double r23707 = sin(r23698);
double r23708 = sin(r23700);
double r23709 = r23707 * r23708;
double r23710 = r23709 * r23705;
double r23711 = exp(r23710);
double r23712 = log(r23711);
double r23713 = r23706 + r23712;
double r23714 = r23697 + r23713;
double r23715 = acos(r23714);
double r23716 = R;
double r23717 = r23715 * r23716;
return r23717;
}



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-diff3.8
Applied distribute-lft-in3.8
Simplified3.8
Simplified3.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019347
(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))