\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 - \frac{\left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)\right)}{\left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2846892 = lambda1;
double r2846893 = lambda2;
double r2846894 = r2846892 - r2846893;
double r2846895 = sin(r2846894);
double r2846896 = phi2;
double r2846897 = cos(r2846896);
double r2846898 = r2846895 * r2846897;
double r2846899 = phi1;
double r2846900 = cos(r2846899);
double r2846901 = sin(r2846896);
double r2846902 = r2846900 * r2846901;
double r2846903 = sin(r2846899);
double r2846904 = r2846903 * r2846897;
double r2846905 = cos(r2846894);
double r2846906 = r2846904 * r2846905;
double r2846907 = r2846902 - r2846906;
double r2846908 = atan2(r2846898, r2846907);
return r2846908;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2846909 = lambda2;
double r2846910 = cos(r2846909);
double r2846911 = lambda1;
double r2846912 = sin(r2846911);
double r2846913 = r2846910 * r2846912;
double r2846914 = cos(r2846911);
double r2846915 = sin(r2846909);
double r2846916 = r2846914 * r2846915;
double r2846917 = r2846913 - r2846916;
double r2846918 = phi2;
double r2846919 = cos(r2846918);
double r2846920 = r2846917 * r2846919;
double r2846921 = sin(r2846918);
double r2846922 = phi1;
double r2846923 = cos(r2846922);
double r2846924 = r2846921 * r2846923;
double r2846925 = sin(r2846922);
double r2846926 = r2846919 * r2846925;
double r2846927 = r2846915 * r2846912;
double r2846928 = r2846927 * r2846927;
double r2846929 = r2846927 * r2846928;
double r2846930 = r2846910 * r2846914;
double r2846931 = r2846930 * r2846930;
double r2846932 = r2846930 * r2846931;
double r2846933 = r2846929 + r2846932;
double r2846934 = r2846926 * r2846933;
double r2846935 = r2846930 * r2846927;
double r2846936 = r2846928 - r2846935;
double r2846937 = r2846936 + r2846931;
double r2846938 = r2846934 / r2846937;
double r2846939 = r2846924 - r2846938;
double r2846940 = atan2(r2846920, r2846939);
return r2846940;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.4
rmApplied sin-diff6.8
rmApplied cos-diff0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019146
(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))))))