\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(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5317525 = lambda1;
double r5317526 = lambda2;
double r5317527 = r5317525 - r5317526;
double r5317528 = sin(r5317527);
double r5317529 = phi2;
double r5317530 = cos(r5317529);
double r5317531 = r5317528 * r5317530;
double r5317532 = phi1;
double r5317533 = cos(r5317532);
double r5317534 = sin(r5317529);
double r5317535 = r5317533 * r5317534;
double r5317536 = sin(r5317532);
double r5317537 = r5317536 * r5317530;
double r5317538 = cos(r5317527);
double r5317539 = r5317537 * r5317538;
double r5317540 = r5317535 - r5317539;
double r5317541 = atan2(r5317531, r5317540);
return r5317541;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5317542 = lambda2;
double r5317543 = cos(r5317542);
double r5317544 = lambda1;
double r5317545 = sin(r5317544);
double r5317546 = r5317543 * r5317545;
double r5317547 = cos(r5317544);
double r5317548 = sin(r5317542);
double r5317549 = r5317547 * r5317548;
double r5317550 = r5317546 - r5317549;
double r5317551 = phi2;
double r5317552 = cos(r5317551);
double r5317553 = r5317550 * r5317552;
double r5317554 = sin(r5317551);
double r5317555 = phi1;
double r5317556 = cos(r5317555);
double r5317557 = r5317554 * r5317556;
double r5317558 = r5317543 * r5317547;
double r5317559 = sin(r5317555);
double r5317560 = r5317559 * r5317552;
double r5317561 = r5317558 * r5317560;
double r5317562 = r5317548 * r5317545;
double r5317563 = cbrt(r5317562);
double r5317564 = r5317563 * r5317563;
double r5317565 = r5317563 * r5317564;
double r5317566 = r5317560 * r5317565;
double r5317567 = r5317561 + r5317566;
double r5317568 = r5317557 - r5317567;
double r5317569 = atan2(r5317553, r5317568);
return r5317569;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.3
rmApplied sin-diff6.8
rmApplied cos-diff0.2
Applied distribute-lft-in0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019163
(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))))))