\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 \lambda_2\right)}^{3}\right)}{\left(-\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 - \cos \lambda_1 \cdot \cos \lambda_2\right) + \left(-{\left(\cos \lambda_1\right)}^{2} \cdot {\left(\cos \lambda_2\right)}^{2}\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r98346 = lambda1;
double r98347 = lambda2;
double r98348 = r98346 - r98347;
double r98349 = sin(r98348);
double r98350 = phi2;
double r98351 = cos(r98350);
double r98352 = r98349 * r98351;
double r98353 = phi1;
double r98354 = cos(r98353);
double r98355 = sin(r98350);
double r98356 = r98354 * r98355;
double r98357 = sin(r98353);
double r98358 = r98357 * r98351;
double r98359 = cos(r98348);
double r98360 = r98358 * r98359;
double r98361 = r98356 - r98360;
double r98362 = atan2(r98352, r98361);
return r98362;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r98363 = lambda1;
double r98364 = sin(r98363);
double r98365 = lambda2;
double r98366 = cos(r98365);
double r98367 = r98364 * r98366;
double r98368 = cos(r98363);
double r98369 = -r98365;
double r98370 = sin(r98369);
double r98371 = r98368 * r98370;
double r98372 = r98367 + r98371;
double r98373 = phi2;
double r98374 = cos(r98373);
double r98375 = r98372 * r98374;
double r98376 = phi1;
double r98377 = cos(r98376);
double r98378 = sin(r98373);
double r98379 = r98377 * r98378;
double r98380 = sin(r98376);
double r98381 = r98380 * r98374;
double r98382 = r98368 * r98366;
double r98383 = 3.0;
double r98384 = pow(r98382, r98383);
double r98385 = sin(r98365);
double r98386 = r98364 * r98385;
double r98387 = pow(r98386, r98383);
double r98388 = r98384 + r98387;
double r98389 = r98381 * r98388;
double r98390 = -r98389;
double r98391 = -r98386;
double r98392 = r98386 - r98382;
double r98393 = r98391 * r98392;
double r98394 = 2.0;
double r98395 = pow(r98368, r98394);
double r98396 = pow(r98366, r98394);
double r98397 = r98395 * r98396;
double r98398 = -r98397;
double r98399 = r98393 + r98398;
double r98400 = r98390 / r98399;
double r98401 = r98379 - r98400;
double r98402 = atan2(r98375, r98401);
return r98402;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.6
rmApplied sub-neg13.6
Applied sin-sum6.9
Simplified6.9
rmApplied cos-diff0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
rmApplied frac-2neg0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020056
(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))))))