\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(\cos \phi_2 \cdot \sin \phi_1\right) + \sqrt[3]{\left(\sqrt[3]{\left(\left(\left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right) \cdot \left(\left(\left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)} \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)\right)}\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4412687 = lambda1;
double r4412688 = lambda2;
double r4412689 = r4412687 - r4412688;
double r4412690 = sin(r4412689);
double r4412691 = phi2;
double r4412692 = cos(r4412691);
double r4412693 = r4412690 * r4412692;
double r4412694 = phi1;
double r4412695 = cos(r4412694);
double r4412696 = sin(r4412691);
double r4412697 = r4412695 * r4412696;
double r4412698 = sin(r4412694);
double r4412699 = r4412698 * r4412692;
double r4412700 = cos(r4412689);
double r4412701 = r4412699 * r4412700;
double r4412702 = r4412697 - r4412701;
double r4412703 = atan2(r4412693, r4412702);
return r4412703;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4412704 = lambda2;
double r4412705 = cos(r4412704);
double r4412706 = lambda1;
double r4412707 = sin(r4412706);
double r4412708 = r4412705 * r4412707;
double r4412709 = cos(r4412706);
double r4412710 = sin(r4412704);
double r4412711 = r4412709 * r4412710;
double r4412712 = r4412708 - r4412711;
double r4412713 = phi2;
double r4412714 = cos(r4412713);
double r4412715 = r4412712 * r4412714;
double r4412716 = sin(r4412713);
double r4412717 = phi1;
double r4412718 = cos(r4412717);
double r4412719 = r4412716 * r4412718;
double r4412720 = r4412705 * r4412709;
double r4412721 = sin(r4412717);
double r4412722 = r4412714 * r4412721;
double r4412723 = r4412720 * r4412722;
double r4412724 = r4412722 * r4412722;
double r4412725 = r4412724 * r4412722;
double r4412726 = r4412725 * r4412725;
double r4412727 = cbrt(r4412726);
double r4412728 = r4412727 * r4412722;
double r4412729 = r4412710 * r4412707;
double r4412730 = r4412729 * r4412729;
double r4412731 = r4412729 * r4412730;
double r4412732 = r4412728 * r4412731;
double r4412733 = cbrt(r4412732);
double r4412734 = r4412723 + r4412733;
double r4412735 = r4412719 - r4412734;
double r4412736 = atan2(r4412715, r4412735);
return r4412736;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sin-diff6.5
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Final simplification0.2
herbie shell --seed 2019144
(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))))))