\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(\sqrt[3]{{\left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}\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 r81491 = lambda1;
double r81492 = lambda2;
double r81493 = r81491 - r81492;
double r81494 = sin(r81493);
double r81495 = phi2;
double r81496 = cos(r81495);
double r81497 = r81494 * r81496;
double r81498 = phi1;
double r81499 = cos(r81498);
double r81500 = sin(r81495);
double r81501 = r81499 * r81500;
double r81502 = sin(r81498);
double r81503 = r81502 * r81496;
double r81504 = cos(r81493);
double r81505 = r81503 * r81504;
double r81506 = r81501 - r81505;
double r81507 = atan2(r81497, r81506);
return r81507;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r81508 = lambda1;
double r81509 = sin(r81508);
double r81510 = lambda2;
double r81511 = cos(r81510);
double r81512 = r81509 * r81511;
double r81513 = cos(r81508);
double r81514 = -r81510;
double r81515 = sin(r81514);
double r81516 = r81513 * r81515;
double r81517 = r81512 + r81516;
double r81518 = phi2;
double r81519 = cos(r81518);
double r81520 = r81517 * r81519;
double r81521 = phi1;
double r81522 = cos(r81521);
double r81523 = sin(r81518);
double r81524 = r81522 * r81523;
double r81525 = sin(r81521);
double r81526 = r81525 * r81519;
double r81527 = r81513 * r81511;
double r81528 = 3.0;
double r81529 = pow(r81527, r81528);
double r81530 = pow(r81529, r81528);
double r81531 = cbrt(r81530);
double r81532 = r81509 * r81515;
double r81533 = pow(r81532, r81528);
double r81534 = r81531 - r81533;
double r81535 = r81526 * r81534;
double r81536 = r81527 * r81527;
double r81537 = r81532 * r81532;
double r81538 = r81527 * r81532;
double r81539 = r81537 + r81538;
double r81540 = r81536 + r81539;
double r81541 = r81535 / r81540;
double r81542 = r81524 - r81541;
double r81543 = atan2(r81520, r81542);
return r81543;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sub-neg13.1
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
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020047 +o rules:numerics
(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))))))