\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 \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 r145386 = lambda1;
double r145387 = lambda2;
double r145388 = r145386 - r145387;
double r145389 = sin(r145388);
double r145390 = phi2;
double r145391 = cos(r145390);
double r145392 = r145389 * r145391;
double r145393 = phi1;
double r145394 = cos(r145393);
double r145395 = sin(r145390);
double r145396 = r145394 * r145395;
double r145397 = sin(r145393);
double r145398 = r145397 * r145391;
double r145399 = cos(r145388);
double r145400 = r145398 * r145399;
double r145401 = r145396 - r145400;
double r145402 = atan2(r145392, r145401);
return r145402;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r145403 = lambda1;
double r145404 = sin(r145403);
double r145405 = lambda2;
double r145406 = cos(r145405);
double r145407 = r145404 * r145406;
double r145408 = cos(r145403);
double r145409 = -r145405;
double r145410 = sin(r145409);
double r145411 = r145408 * r145410;
double r145412 = r145407 + r145411;
double r145413 = phi2;
double r145414 = cos(r145413);
double r145415 = r145412 * r145414;
double r145416 = phi1;
double r145417 = cos(r145416);
double r145418 = sin(r145413);
double r145419 = r145417 * r145418;
double r145420 = sin(r145416);
double r145421 = r145420 * r145414;
double r145422 = r145408 * r145406;
double r145423 = 3.0;
double r145424 = pow(r145422, r145423);
double r145425 = r145404 * r145410;
double r145426 = pow(r145425, r145423);
double r145427 = r145424 - r145426;
double r145428 = r145421 * r145427;
double r145429 = r145422 * r145422;
double r145430 = r145425 * r145425;
double r145431 = r145422 * r145425;
double r145432 = r145430 + r145431;
double r145433 = r145429 + r145432;
double r145434 = r145428 / r145433;
double r145435 = r145419 - r145434;
double r145436 = atan2(r145415, r145435);
return r145436;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 12.5
rmApplied sub-neg12.5
Applied sin-sum6.5
Simplified6.5
rmApplied sub-neg6.5
Applied cos-sum0.2
Simplified0.2
rmApplied flip3--0.2
Applied associate-*r/0.2
Final simplification0.2
herbie shell --seed 2020003
(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))))))