\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{{\left({\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3}\right)}^{3}} - {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}\right)}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right) + \left(\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r101651 = lambda1;
double r101652 = lambda2;
double r101653 = r101651 - r101652;
double r101654 = sin(r101653);
double r101655 = phi2;
double r101656 = cos(r101655);
double r101657 = r101654 * r101656;
double r101658 = phi1;
double r101659 = cos(r101658);
double r101660 = sin(r101655);
double r101661 = r101659 * r101660;
double r101662 = sin(r101658);
double r101663 = r101662 * r101656;
double r101664 = cos(r101653);
double r101665 = r101663 * r101664;
double r101666 = r101661 - r101665;
double r101667 = atan2(r101657, r101666);
return r101667;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r101668 = lambda1;
double r101669 = sin(r101668);
double r101670 = lambda2;
double r101671 = cos(r101670);
double r101672 = r101669 * r101671;
double r101673 = cos(r101668);
double r101674 = -r101670;
double r101675 = sin(r101674);
double r101676 = r101673 * r101675;
double r101677 = r101672 + r101676;
double r101678 = phi2;
double r101679 = cos(r101678);
double r101680 = r101677 * r101679;
double r101681 = phi1;
double r101682 = cos(r101681);
double r101683 = sin(r101678);
double r101684 = r101682 * r101683;
double r101685 = sin(r101681);
double r101686 = r101685 * r101679;
double r101687 = r101671 * r101673;
double r101688 = 3.0;
double r101689 = pow(r101687, r101688);
double r101690 = pow(r101689, r101688);
double r101691 = cbrt(r101690);
double r101692 = r101669 * r101675;
double r101693 = pow(r101692, r101688);
double r101694 = r101691 - r101693;
double r101695 = r101686 * r101694;
double r101696 = r101687 * r101687;
double r101697 = r101692 * r101692;
double r101698 = r101687 * r101692;
double r101699 = r101697 + r101698;
double r101700 = r101696 + r101699;
double r101701 = r101695 / r101700;
double r101702 = r101684 - r101701;
double r101703 = atan2(r101680, r101702);
return r101703;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sub-neg13.1
Applied sin-sum6.8
Simplified6.8
rmApplied sub-neg6.8
Applied cos-sum0.2
Simplified0.2
rmApplied flip3--0.2
Applied associate-*r/0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020047 +o rules:numerics
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
:precision binary64
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))