\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{\sqrt[3]{\cos \phi_2} \cdot \left({\left(\cos \phi_2 \cdot \cos \phi_2\right)}^{\frac{1}{3}} \cdot \left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2137751 = lambda1;
double r2137752 = lambda2;
double r2137753 = r2137751 - r2137752;
double r2137754 = sin(r2137753);
double r2137755 = phi2;
double r2137756 = cos(r2137755);
double r2137757 = r2137754 * r2137756;
double r2137758 = phi1;
double r2137759 = cos(r2137758);
double r2137760 = sin(r2137755);
double r2137761 = r2137759 * r2137760;
double r2137762 = sin(r2137758);
double r2137763 = r2137762 * r2137756;
double r2137764 = cos(r2137753);
double r2137765 = r2137763 * r2137764;
double r2137766 = r2137761 - r2137765;
double r2137767 = atan2(r2137757, r2137766);
return r2137767;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2137768 = phi2;
double r2137769 = cos(r2137768);
double r2137770 = cbrt(r2137769);
double r2137771 = r2137769 * r2137769;
double r2137772 = 0.3333333333333333;
double r2137773 = pow(r2137771, r2137772);
double r2137774 = lambda2;
double r2137775 = cos(r2137774);
double r2137776 = lambda1;
double r2137777 = sin(r2137776);
double r2137778 = r2137775 * r2137777;
double r2137779 = cos(r2137776);
double r2137780 = sin(r2137774);
double r2137781 = r2137779 * r2137780;
double r2137782 = r2137778 - r2137781;
double r2137783 = r2137773 * r2137782;
double r2137784 = r2137770 * r2137783;
double r2137785 = phi1;
double r2137786 = cos(r2137785);
double r2137787 = sin(r2137768);
double r2137788 = r2137786 * r2137787;
double r2137789 = r2137780 * r2137777;
double r2137790 = r2137775 * r2137779;
double r2137791 = r2137789 + r2137790;
double r2137792 = sin(r2137785);
double r2137793 = r2137769 * r2137792;
double r2137794 = r2137791 * r2137793;
double r2137795 = r2137788 - r2137794;
double r2137796 = atan2(r2137784, r2137795);
return r2137796;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 12.7
rmApplied sin-diff6.6
rmApplied cos-diff0.2
rmApplied add-cube-cbrt0.4
Applied associate-*r*0.4
rmApplied pow1/315.6
Applied pow1/315.6
Applied pow-prod-down0.2
Final simplification0.2
herbie shell --seed 2019156
(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))))))