\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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} - {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r178990 = lambda1;
double r178991 = lambda2;
double r178992 = r178990 - r178991;
double r178993 = sin(r178992);
double r178994 = phi2;
double r178995 = cos(r178994);
double r178996 = r178993 * r178995;
double r178997 = phi1;
double r178998 = cos(r178997);
double r178999 = sin(r178994);
double r179000 = r178998 * r178999;
double r179001 = sin(r178997);
double r179002 = r179001 * r178995;
double r179003 = cos(r178992);
double r179004 = r179002 * r179003;
double r179005 = r179000 - r179004;
double r179006 = atan2(r178996, r179005);
return r179006;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r179007 = lambda1;
double r179008 = sin(r179007);
double r179009 = lambda2;
double r179010 = cos(r179009);
double r179011 = r179008 * r179010;
double r179012 = cos(r179007);
double r179013 = -r179009;
double r179014 = sin(r179013);
double r179015 = r179012 * r179014;
double r179016 = r179011 + r179015;
double r179017 = phi2;
double r179018 = cos(r179017);
double r179019 = r179016 * r179018;
double r179020 = phi1;
double r179021 = cos(r179020);
double r179022 = sin(r179017);
double r179023 = r179021 * r179022;
double r179024 = sin(r179020);
double r179025 = r179024 * r179018;
double r179026 = r179012 * r179010;
double r179027 = 3.0;
double r179028 = pow(r179026, r179027);
double r179029 = r179008 * r179014;
double r179030 = pow(r179029, r179027);
double r179031 = r179028 - r179030;
double r179032 = r179025 * r179031;
double r179033 = r179026 * r179026;
double r179034 = r179029 * r179029;
double r179035 = r179026 * r179029;
double r179036 = r179034 + r179035;
double r179037 = r179033 + r179036;
double r179038 = r179032 / r179037;
double r179039 = r179023 - r179038;
double r179040 = atan2(r179019, r179039);
return r179040;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 12.8
rmApplied sub-neg12.8
Applied sin-sum6.6
Simplified6.6
rmApplied sub-neg6.6
Applied cos-sum0.2
Simplified0.2
rmApplied flip3--0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2020024
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
:precision binary64
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))