\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) + \left(\left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5059629 = lambda1;
double r5059630 = lambda2;
double r5059631 = r5059629 - r5059630;
double r5059632 = sin(r5059631);
double r5059633 = phi2;
double r5059634 = cos(r5059633);
double r5059635 = r5059632 * r5059634;
double r5059636 = phi1;
double r5059637 = cos(r5059636);
double r5059638 = sin(r5059633);
double r5059639 = r5059637 * r5059638;
double r5059640 = sin(r5059636);
double r5059641 = r5059640 * r5059634;
double r5059642 = cos(r5059631);
double r5059643 = r5059641 * r5059642;
double r5059644 = r5059639 - r5059643;
double r5059645 = atan2(r5059635, r5059644);
return r5059645;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r5059646 = lambda2;
double r5059647 = cos(r5059646);
double r5059648 = lambda1;
double r5059649 = sin(r5059648);
double r5059650 = r5059647 * r5059649;
double r5059651 = cos(r5059648);
double r5059652 = sin(r5059646);
double r5059653 = r5059651 * r5059652;
double r5059654 = r5059650 - r5059653;
double r5059655 = phi2;
double r5059656 = cos(r5059655);
double r5059657 = r5059654 * r5059656;
double r5059658 = sin(r5059655);
double r5059659 = phi1;
double r5059660 = cos(r5059659);
double r5059661 = r5059658 * r5059660;
double r5059662 = r5059647 * r5059651;
double r5059663 = sin(r5059659);
double r5059664 = r5059656 * r5059663;
double r5059665 = r5059662 * r5059664;
double r5059666 = cbrt(r5059652);
double r5059667 = r5059666 * r5059666;
double r5059668 = r5059667 * r5059649;
double r5059669 = r5059668 * r5059666;
double r5059670 = r5059669 * r5059664;
double r5059671 = r5059665 + r5059670;
double r5059672 = r5059661 - r5059671;
double r5059673 = atan2(r5059657, r5059672);
return r5059673;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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