\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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sin \lambda_2 \cdot \sqrt[3]{\sin \lambda_1}\right)\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3477628 = lambda1;
double r3477629 = lambda2;
double r3477630 = r3477628 - r3477629;
double r3477631 = sin(r3477630);
double r3477632 = phi2;
double r3477633 = cos(r3477632);
double r3477634 = r3477631 * r3477633;
double r3477635 = phi1;
double r3477636 = cos(r3477635);
double r3477637 = sin(r3477632);
double r3477638 = r3477636 * r3477637;
double r3477639 = sin(r3477635);
double r3477640 = r3477639 * r3477633;
double r3477641 = cos(r3477630);
double r3477642 = r3477640 * r3477641;
double r3477643 = r3477638 - r3477642;
double r3477644 = atan2(r3477634, r3477643);
return r3477644;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3477645 = lambda2;
double r3477646 = cos(r3477645);
double r3477647 = lambda1;
double r3477648 = sin(r3477647);
double r3477649 = r3477646 * r3477648;
double r3477650 = cos(r3477647);
double r3477651 = sin(r3477645);
double r3477652 = r3477650 * r3477651;
double r3477653 = r3477649 - r3477652;
double r3477654 = phi2;
double r3477655 = cos(r3477654);
double r3477656 = r3477653 * r3477655;
double r3477657 = sin(r3477654);
double r3477658 = phi1;
double r3477659 = cos(r3477658);
double r3477660 = r3477657 * r3477659;
double r3477661 = r3477646 * r3477650;
double r3477662 = sin(r3477658);
double r3477663 = r3477662 * r3477655;
double r3477664 = r3477661 * r3477663;
double r3477665 = cbrt(r3477648);
double r3477666 = r3477665 * r3477665;
double r3477667 = r3477651 * r3477665;
double r3477668 = r3477666 * r3477667;
double r3477669 = r3477663 * r3477668;
double r3477670 = r3477664 + r3477669;
double r3477671 = r3477660 - r3477670;
double r3477672 = atan2(r3477656, r3477671);
return r3477672;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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