\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(\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) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6591781 = lambda1;
double r6591782 = lambda2;
double r6591783 = r6591781 - r6591782;
double r6591784 = sin(r6591783);
double r6591785 = phi2;
double r6591786 = cos(r6591785);
double r6591787 = r6591784 * r6591786;
double r6591788 = phi1;
double r6591789 = cos(r6591788);
double r6591790 = sin(r6591785);
double r6591791 = r6591789 * r6591790;
double r6591792 = sin(r6591788);
double r6591793 = r6591792 * r6591786;
double r6591794 = cos(r6591783);
double r6591795 = r6591793 * r6591794;
double r6591796 = r6591791 - r6591795;
double r6591797 = atan2(r6591787, r6591796);
return r6591797;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6591798 = lambda2;
double r6591799 = cos(r6591798);
double r6591800 = lambda1;
double r6591801 = sin(r6591800);
double r6591802 = r6591799 * r6591801;
double r6591803 = cos(r6591800);
double r6591804 = sin(r6591798);
double r6591805 = r6591803 * r6591804;
double r6591806 = r6591802 - r6591805;
double r6591807 = phi2;
double r6591808 = cos(r6591807);
double r6591809 = r6591806 * r6591808;
double r6591810 = sin(r6591807);
double r6591811 = phi1;
double r6591812 = cos(r6591811);
double r6591813 = r6591810 * r6591812;
double r6591814 = r6591799 * r6591803;
double r6591815 = sin(r6591811);
double r6591816 = r6591808 * r6591815;
double r6591817 = r6591814 * r6591816;
double r6591818 = r6591804 * r6591801;
double r6591819 = cbrt(r6591818);
double r6591820 = r6591819 * r6591819;
double r6591821 = r6591819 * r6591820;
double r6591822 = r6591821 * r6591816;
double r6591823 = r6591817 + r6591822;
double r6591824 = r6591813 - r6591823;
double r6591825 = atan2(r6591809, r6591824);
return r6591825;
}



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-rgt-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))))))