\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(\sin \lambda_1 \cdot \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sqrt[3]{\sin \lambda_2}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sin \lambda_2}} \cdot \sqrt[3]{\sqrt[3]{\sin \lambda_2}}\right)\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4997944 = lambda1;
double r4997945 = lambda2;
double r4997946 = r4997944 - r4997945;
double r4997947 = sin(r4997946);
double r4997948 = phi2;
double r4997949 = cos(r4997948);
double r4997950 = r4997947 * r4997949;
double r4997951 = phi1;
double r4997952 = cos(r4997951);
double r4997953 = sin(r4997948);
double r4997954 = r4997952 * r4997953;
double r4997955 = sin(r4997951);
double r4997956 = r4997955 * r4997949;
double r4997957 = cos(r4997946);
double r4997958 = r4997956 * r4997957;
double r4997959 = r4997954 - r4997958;
double r4997960 = atan2(r4997950, r4997959);
return r4997960;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4997961 = lambda2;
double r4997962 = cos(r4997961);
double r4997963 = lambda1;
double r4997964 = sin(r4997963);
double r4997965 = r4997962 * r4997964;
double r4997966 = cos(r4997963);
double r4997967 = sin(r4997961);
double r4997968 = r4997966 * r4997967;
double r4997969 = r4997965 - r4997968;
double r4997970 = phi2;
double r4997971 = cos(r4997970);
double r4997972 = r4997969 * r4997971;
double r4997973 = sin(r4997970);
double r4997974 = phi1;
double r4997975 = cos(r4997974);
double r4997976 = r4997973 * r4997975;
double r4997977 = r4997962 * r4997966;
double r4997978 = sin(r4997974);
double r4997979 = r4997978 * r4997971;
double r4997980 = r4997977 * r4997979;
double r4997981 = cbrt(r4997967);
double r4997982 = cbrt(r4997981);
double r4997983 = r4997981 * r4997982;
double r4997984 = r4997982 * r4997982;
double r4997985 = r4997983 * r4997984;
double r4997986 = r4997964 * r4997985;
double r4997987 = r4997986 * r4997981;
double r4997988 = r4997979 * r4997987;
double r4997989 = r4997980 + r4997988;
double r4997990 = r4997976 - r4997989;
double r4997991 = atan2(r4997972, r4997990);
return r4997991;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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