\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(\sqrt[3]{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2} \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r141334 = lambda1;
double r141335 = lambda2;
double r141336 = r141334 - r141335;
double r141337 = sin(r141336);
double r141338 = phi2;
double r141339 = cos(r141338);
double r141340 = r141337 * r141339;
double r141341 = phi1;
double r141342 = cos(r141341);
double r141343 = sin(r141338);
double r141344 = r141342 * r141343;
double r141345 = sin(r141341);
double r141346 = r141345 * r141339;
double r141347 = cos(r141336);
double r141348 = r141346 * r141347;
double r141349 = r141344 - r141348;
double r141350 = atan2(r141340, r141349);
return r141350;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r141351 = lambda2;
double r141352 = sin(r141351);
double r141353 = lambda1;
double r141354 = cos(r141353);
double r141355 = -r141354;
double r141356 = r141352 * r141355;
double r141357 = cos(r141351);
double r141358 = sin(r141353);
double r141359 = r141357 * r141358;
double r141360 = r141356 + r141359;
double r141361 = phi2;
double r141362 = cos(r141361);
double r141363 = r141360 * r141362;
double r141364 = cbrt(r141363);
double r141365 = r141364 * r141364;
double r141366 = r141365 * r141364;
double r141367 = sin(r141361);
double r141368 = phi1;
double r141369 = cos(r141368);
double r141370 = r141367 * r141369;
double r141371 = r141358 * r141352;
double r141372 = sin(r141368);
double r141373 = r141372 * r141362;
double r141374 = r141371 * r141373;
double r141375 = r141354 * r141357;
double r141376 = r141375 * r141372;
double r141377 = r141362 * r141376;
double r141378 = r141374 + r141377;
double r141379 = r141370 - r141378;
double r141380 = atan2(r141366, r141379);
return r141380;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.0
rmApplied sub-neg13.0
Applied sin-sum6.4
Simplified6.4
rmApplied cos-diff0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019195
(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))))))