\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{\cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right) - \left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}{\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_2 \cdot \sin \lambda_1}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4739415 = lambda1;
double r4739416 = lambda2;
double r4739417 = r4739415 - r4739416;
double r4739418 = sin(r4739417);
double r4739419 = phi2;
double r4739420 = cos(r4739419);
double r4739421 = r4739418 * r4739420;
double r4739422 = phi1;
double r4739423 = cos(r4739422);
double r4739424 = sin(r4739419);
double r4739425 = r4739423 * r4739424;
double r4739426 = sin(r4739422);
double r4739427 = r4739426 * r4739420;
double r4739428 = cos(r4739417);
double r4739429 = r4739427 * r4739428;
double r4739430 = r4739425 - r4739429;
double r4739431 = atan2(r4739421, r4739430);
return r4739431;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4739432 = phi2;
double r4739433 = cos(r4739432);
double r4739434 = lambda2;
double r4739435 = cos(r4739434);
double r4739436 = lambda1;
double r4739437 = sin(r4739436);
double r4739438 = r4739435 * r4739437;
double r4739439 = cos(r4739436);
double r4739440 = sin(r4739434);
double r4739441 = r4739439 * r4739440;
double r4739442 = r4739438 - r4739441;
double r4739443 = r4739433 * r4739442;
double r4739444 = phi1;
double r4739445 = cos(r4739444);
double r4739446 = sin(r4739432);
double r4739447 = r4739445 * r4739446;
double r4739448 = r4739435 * r4739439;
double r4739449 = r4739448 * r4739448;
double r4739450 = r4739440 * r4739437;
double r4739451 = r4739450 * r4739450;
double r4739452 = r4739449 - r4739451;
double r4739453 = sin(r4739444);
double r4739454 = r4739433 * r4739453;
double r4739455 = r4739452 * r4739454;
double r4739456 = r4739448 - r4739450;
double r4739457 = r4739455 / r4739456;
double r4739458 = r4739447 - r4739457;
double r4739459 = atan2(r4739443, r4739458);
return r4739459;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sin-diff6.7
rmApplied cos-diff0.2
rmApplied flip-+0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2019200
(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))))))