\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(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sin \lambda_2 \cdot \sqrt[3]{\sin \lambda_1}\right)\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5086810 = lambda1;
double r5086811 = lambda2;
double r5086812 = r5086810 - r5086811;
double r5086813 = sin(r5086812);
double r5086814 = phi2;
double r5086815 = cos(r5086814);
double r5086816 = r5086813 * r5086815;
double r5086817 = phi1;
double r5086818 = cos(r5086817);
double r5086819 = sin(r5086814);
double r5086820 = r5086818 * r5086819;
double r5086821 = sin(r5086817);
double r5086822 = r5086821 * r5086815;
double r5086823 = cos(r5086812);
double r5086824 = r5086822 * r5086823;
double r5086825 = r5086820 - r5086824;
double r5086826 = atan2(r5086816, r5086825);
return r5086826;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5086827 = lambda2;
double r5086828 = cos(r5086827);
double r5086829 = lambda1;
double r5086830 = sin(r5086829);
double r5086831 = r5086828 * r5086830;
double r5086832 = cos(r5086829);
double r5086833 = sin(r5086827);
double r5086834 = r5086832 * r5086833;
double r5086835 = r5086831 - r5086834;
double r5086836 = phi2;
double r5086837 = cos(r5086836);
double r5086838 = r5086835 * r5086837;
double r5086839 = sin(r5086836);
double r5086840 = phi1;
double r5086841 = cos(r5086840);
double r5086842 = r5086839 * r5086841;
double r5086843 = r5086828 * r5086832;
double r5086844 = sin(r5086840);
double r5086845 = r5086837 * r5086844;
double r5086846 = r5086843 * r5086845;
double r5086847 = cbrt(r5086830);
double r5086848 = r5086847 * r5086847;
double r5086849 = r5086833 * r5086847;
double r5086850 = r5086848 * r5086849;
double r5086851 = r5086850 * r5086845;
double r5086852 = r5086846 + r5086851;
double r5086853 = r5086842 - r5086852;
double r5086854 = atan2(r5086838, r5086853);
return r5086854;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sin-diff6.6
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2019170
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))