\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 - \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1} \cdot \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2209661 = lambda1;
double r2209662 = lambda2;
double r2209663 = r2209661 - r2209662;
double r2209664 = sin(r2209663);
double r2209665 = phi2;
double r2209666 = cos(r2209665);
double r2209667 = r2209664 * r2209666;
double r2209668 = phi1;
double r2209669 = cos(r2209668);
double r2209670 = sin(r2209665);
double r2209671 = r2209669 * r2209670;
double r2209672 = sin(r2209668);
double r2209673 = r2209672 * r2209666;
double r2209674 = cos(r2209663);
double r2209675 = r2209673 * r2209674;
double r2209676 = r2209671 - r2209675;
double r2209677 = atan2(r2209667, r2209676);
return r2209677;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2209678 = lambda2;
double r2209679 = cos(r2209678);
double r2209680 = lambda1;
double r2209681 = sin(r2209680);
double r2209682 = r2209679 * r2209681;
double r2209683 = cos(r2209680);
double r2209684 = sin(r2209678);
double r2209685 = r2209683 * r2209684;
double r2209686 = r2209682 - r2209685;
double r2209687 = phi2;
double r2209688 = cos(r2209687);
double r2209689 = r2209686 * r2209688;
double r2209690 = sin(r2209687);
double r2209691 = phi1;
double r2209692 = cos(r2209691);
double r2209693 = r2209690 * r2209692;
double r2209694 = r2209684 * r2209681;
double r2209695 = r2209679 * r2209683;
double r2209696 = r2209694 + r2209695;
double r2209697 = cbrt(r2209696);
double r2209698 = sin(r2209691);
double r2209699 = r2209698 * r2209688;
double r2209700 = r2209696 * r2209696;
double r2209701 = cbrt(r2209700);
double r2209702 = r2209699 * r2209701;
double r2209703 = r2209697 * r2209702;
double r2209704 = r2209693 - r2209703;
double r2209705 = atan2(r2209689, r2209704);
return r2209705;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sin-diff6.8
rmApplied cos-diff0.2
rmApplied add-cube-cbrt0.3
Applied associate-*r*0.3
rmApplied cbrt-unprod0.2
Final simplification0.2
herbie shell --seed 2019153
(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))))))