\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 RR \cdot \cos^{-1} \left(\left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right) + \log \left(e^{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1855631 = phi1;
double r1855632 = sin(r1855631);
double r1855633 = phi2;
double r1855634 = sin(r1855633);
double r1855635 = r1855632 * r1855634;
double r1855636 = cos(r1855631);
double r1855637 = cos(r1855633);
double r1855638 = r1855636 * r1855637;
double r1855639 = lambda1;
double r1855640 = lambda2;
double r1855641 = r1855639 - r1855640;
double r1855642 = cos(r1855641);
double r1855643 = r1855638 * r1855642;
double r1855644 = r1855635 + r1855643;
double r1855645 = acos(r1855644);
double r1855646 = R;
double r1855647 = r1855645 * r1855646;
return r1855647;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1855648 = R;
double r1855649 = phi1;
double r1855650 = cos(r1855649);
double r1855651 = phi2;
double r1855652 = cos(r1855651);
double r1855653 = r1855650 * r1855652;
double r1855654 = lambda1;
double r1855655 = sin(r1855654);
double r1855656 = lambda2;
double r1855657 = sin(r1855656);
double r1855658 = r1855655 * r1855657;
double r1855659 = r1855653 * r1855658;
double r1855660 = cos(r1855656);
double r1855661 = cos(r1855654);
double r1855662 = r1855660 * r1855661;
double r1855663 = r1855662 * r1855653;
double r1855664 = exp(r1855663);
double r1855665 = log(r1855664);
double r1855666 = r1855659 + r1855665;
double r1855667 = sin(r1855651);
double r1855668 = sin(r1855649);
double r1855669 = r1855667 * r1855668;
double r1855670 = r1855666 + r1855669;
double r1855671 = acos(r1855670);
double r1855672 = r1855648 * r1855671;
return r1855672;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied cos-diff3.9
Applied distribute-lft-in3.9
rmApplied add-log-exp4.0
Final simplification4.0
herbie shell --seed 2019107
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))