\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(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \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)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5281801 = lambda1;
double r5281802 = lambda2;
double r5281803 = r5281801 - r5281802;
double r5281804 = sin(r5281803);
double r5281805 = phi2;
double r5281806 = cos(r5281805);
double r5281807 = r5281804 * r5281806;
double r5281808 = phi1;
double r5281809 = cos(r5281808);
double r5281810 = sin(r5281805);
double r5281811 = r5281809 * r5281810;
double r5281812 = sin(r5281808);
double r5281813 = r5281812 * r5281806;
double r5281814 = cos(r5281803);
double r5281815 = r5281813 * r5281814;
double r5281816 = r5281811 - r5281815;
double r5281817 = atan2(r5281807, r5281816);
return r5281817;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5281818 = lambda2;
double r5281819 = cos(r5281818);
double r5281820 = lambda1;
double r5281821 = sin(r5281820);
double r5281822 = r5281819 * r5281821;
double r5281823 = cos(r5281820);
double r5281824 = sin(r5281818);
double r5281825 = r5281823 * r5281824;
double r5281826 = r5281822 - r5281825;
double r5281827 = phi2;
double r5281828 = cos(r5281827);
double r5281829 = r5281826 * r5281828;
double r5281830 = sin(r5281827);
double r5281831 = phi1;
double r5281832 = cos(r5281831);
double r5281833 = r5281830 * r5281832;
double r5281834 = r5281819 * r5281823;
double r5281835 = sin(r5281831);
double r5281836 = r5281835 * r5281828;
double r5281837 = r5281834 * r5281836;
double r5281838 = cbrt(r5281821);
double r5281839 = r5281838 * r5281838;
double r5281840 = r5281824 * r5281838;
double r5281841 = r5281839 * r5281840;
double r5281842 = r5281836 * r5281841;
double r5281843 = r5281837 + r5281842;
double r5281844 = r5281833 - r5281843;
double r5281845 = atan2(r5281829, r5281844);
return r5281845;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.7
rmApplied sin-diff7.1
rmApplied cos-diff0.2
Applied distribute-lft-in0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2019165
(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))))))