\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 - \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1} \cdot \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r1838972 = lambda1;
double r1838973 = lambda2;
double r1838974 = r1838972 - r1838973;
double r1838975 = sin(r1838974);
double r1838976 = phi2;
double r1838977 = cos(r1838976);
double r1838978 = r1838975 * r1838977;
double r1838979 = phi1;
double r1838980 = cos(r1838979);
double r1838981 = sin(r1838976);
double r1838982 = r1838980 * r1838981;
double r1838983 = sin(r1838979);
double r1838984 = r1838983 * r1838977;
double r1838985 = cos(r1838974);
double r1838986 = r1838984 * r1838985;
double r1838987 = r1838982 - r1838986;
double r1838988 = atan2(r1838978, r1838987);
return r1838988;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r1838989 = lambda2;
double r1838990 = cos(r1838989);
double r1838991 = lambda1;
double r1838992 = sin(r1838991);
double r1838993 = r1838990 * r1838992;
double r1838994 = cos(r1838991);
double r1838995 = sin(r1838989);
double r1838996 = r1838994 * r1838995;
double r1838997 = r1838993 - r1838996;
double r1838998 = phi2;
double r1838999 = cos(r1838998);
double r1839000 = r1838997 * r1838999;
double r1839001 = sin(r1838998);
double r1839002 = phi1;
double r1839003 = cos(r1839002);
double r1839004 = r1839001 * r1839003;
double r1839005 = r1838995 * r1838992;
double r1839006 = r1838990 * r1838994;
double r1839007 = r1839005 + r1839006;
double r1839008 = cbrt(r1839007);
double r1839009 = sin(r1839002);
double r1839010 = r1839009 * r1838999;
double r1839011 = r1839007 * r1839007;
double r1839012 = cbrt(r1839011);
double r1839013 = r1839010 * r1839012;
double r1839014 = r1839008 * r1839013;
double r1839015 = r1839004 - r1839014;
double r1839016 = atan2(r1839000, r1839015);
return r1839016;
}



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
rmApplied add-cube-cbrt0.3
Applied associate-*r*0.3
rmApplied cbrt-unprod0.2
Final simplification0.2
herbie shell --seed 2019153
(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))))))