\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 r155604 = lambda1;
double r155605 = lambda2;
double r155606 = r155604 - r155605;
double r155607 = sin(r155606);
double r155608 = phi2;
double r155609 = cos(r155608);
double r155610 = r155607 * r155609;
double r155611 = phi1;
double r155612 = cos(r155611);
double r155613 = sin(r155608);
double r155614 = r155612 * r155613;
double r155615 = sin(r155611);
double r155616 = r155615 * r155609;
double r155617 = cos(r155606);
double r155618 = r155616 * r155617;
double r155619 = r155614 - r155618;
double r155620 = atan2(r155610, r155619);
return r155620;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r155621 = lambda1;
double r155622 = sin(r155621);
double r155623 = lambda2;
double r155624 = cos(r155623);
double r155625 = r155622 * r155624;
double r155626 = cos(r155621);
double r155627 = -r155623;
double r155628 = sin(r155627);
double r155629 = r155626 * r155628;
double r155630 = r155625 + r155629;
double r155631 = phi2;
double r155632 = cos(r155631);
double r155633 = r155630 * r155632;
double r155634 = phi1;
double r155635 = cos(r155634);
double r155636 = sin(r155631);
double r155637 = r155635 * r155636;
double r155638 = sin(r155634);
double r155639 = r155638 * r155632;
double r155640 = r155626 * r155624;
double r155641 = 3.0;
double r155642 = pow(r155640, r155641);
double r155643 = r155622 * r155628;
double r155644 = pow(r155643, r155641);
double r155645 = r155642 - r155644;
double r155646 = r155639 * r155645;
double r155647 = r155640 * r155640;
double r155648 = r155643 * r155643;
double r155649 = r155640 * r155643;
double r155650 = r155648 + r155649;
double r155651 = r155647 + r155650;
double r155652 = r155646 / r155651;
double r155653 = r155637 - r155652;
double r155654 = atan2(r155633, r155653);
return r155654;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.0
rmApplied sub-neg13.0
Applied sin-sum6.8
Simplified6.8
rmApplied sub-neg6.8
Applied cos-sum0.2
Simplified0.2
rmApplied flip3--0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2020035
(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))))))