\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(\log \left(e^{\sin \lambda_1 \cdot \sin \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(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r115550 = lambda1;
double r115551 = lambda2;
double r115552 = r115550 - r115551;
double r115553 = sin(r115552);
double r115554 = phi2;
double r115555 = cos(r115554);
double r115556 = r115553 * r115555;
double r115557 = phi1;
double r115558 = cos(r115557);
double r115559 = sin(r115554);
double r115560 = r115558 * r115559;
double r115561 = sin(r115557);
double r115562 = r115561 * r115555;
double r115563 = cos(r115552);
double r115564 = r115562 * r115563;
double r115565 = r115560 - r115564;
double r115566 = atan2(r115556, r115565);
return r115566;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r115567 = lambda1;
double r115568 = sin(r115567);
double r115569 = lambda2;
double r115570 = cos(r115569);
double r115571 = r115568 * r115570;
double r115572 = cos(r115567);
double r115573 = -r115569;
double r115574 = sin(r115573);
double r115575 = r115572 * r115574;
double r115576 = r115571 + r115575;
double r115577 = phi2;
double r115578 = cos(r115577);
double r115579 = r115576 * r115578;
double r115580 = phi1;
double r115581 = cos(r115580);
double r115582 = sin(r115577);
double r115583 = r115581 * r115582;
double r115584 = sin(r115580);
double r115585 = r115584 * r115578;
double r115586 = r115572 * r115570;
double r115587 = 3.0;
double r115588 = pow(r115586, r115587);
double r115589 = sin(r115569);
double r115590 = r115568 * r115589;
double r115591 = exp(r115590);
double r115592 = log(r115591);
double r115593 = pow(r115592, r115587);
double r115594 = r115588 + r115593;
double r115595 = r115585 * r115594;
double r115596 = r115586 * r115586;
double r115597 = r115592 * r115592;
double r115598 = r115586 * r115592;
double r115599 = r115597 - r115598;
double r115600 = r115596 + r115599;
double r115601 = r115595 / r115600;
double r115602 = r115583 - r115601;
double r115603 = atan2(r115579, r115602);
return r115603;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.3
rmApplied sub-neg13.3
Applied sin-sum6.8
Simplified6.8
rmApplied cos-diff0.2
rmApplied add-log-exp0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2019308
(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))))))