\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 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)} \cdot \frac{\sqrt[3]{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} - {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}}}{\sqrt[3]{\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)}}\right)\right) \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r201415 = lambda1;
double r201416 = lambda2;
double r201417 = r201415 - r201416;
double r201418 = sin(r201417);
double r201419 = phi2;
double r201420 = cos(r201419);
double r201421 = r201418 * r201420;
double r201422 = phi1;
double r201423 = cos(r201422);
double r201424 = sin(r201419);
double r201425 = r201423 * r201424;
double r201426 = sin(r201422);
double r201427 = r201426 * r201420;
double r201428 = cos(r201417);
double r201429 = r201427 * r201428;
double r201430 = r201425 - r201429;
double r201431 = atan2(r201421, r201430);
return r201431;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r201432 = lambda1;
double r201433 = sin(r201432);
double r201434 = lambda2;
double r201435 = cos(r201434);
double r201436 = r201433 * r201435;
double r201437 = cos(r201432);
double r201438 = -r201434;
double r201439 = sin(r201438);
double r201440 = r201437 * r201439;
double r201441 = r201436 + r201440;
double r201442 = phi2;
double r201443 = cos(r201442);
double r201444 = r201441 * r201443;
double r201445 = phi1;
double r201446 = cos(r201445);
double r201447 = sin(r201442);
double r201448 = r201446 * r201447;
double r201449 = sin(r201445);
double r201450 = r201449 * r201443;
double r201451 = r201437 * r201435;
double r201452 = r201433 * r201439;
double r201453 = r201451 - r201452;
double r201454 = cbrt(r201453);
double r201455 = 3.0;
double r201456 = pow(r201451, r201455);
double r201457 = pow(r201452, r201455);
double r201458 = r201456 - r201457;
double r201459 = cbrt(r201458);
double r201460 = r201451 * r201451;
double r201461 = r201452 * r201452;
double r201462 = r201451 * r201452;
double r201463 = r201461 + r201462;
double r201464 = r201460 + r201463;
double r201465 = cbrt(r201464);
double r201466 = r201459 / r201465;
double r201467 = r201454 * r201466;
double r201468 = r201450 * r201467;
double r201469 = r201468 * r201454;
double r201470 = r201448 - r201469;
double r201471 = atan2(r201444, r201470);
return r201471;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sub-neg13.2
Applied sin-sum7.0
Simplified7.0
rmApplied sub-neg7.0
Applied cos-sum0.2
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied associate-*r*0.3
rmApplied flip3--0.3
Applied cbrt-div0.2
Final simplification0.2
herbie shell --seed 2020027
(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))))))