\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{\cos delta \cdot \cos delta - {\left({\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}^{2}\right)}^{\frac{2}{3}} \cdot \left(\left(\sqrt[3]{\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)} \cdot \sqrt[3]{\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right) \cdot {\left(\sin \phi_1\right)}^{2}\right)}{\cos delta + \left(\left(\left(\sqrt[3]{\sqrt[3]{{\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}^{2}}} \cdot \sqrt[3]{\sqrt[3]{{\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}^{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{{\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}^{2}}}\right) \cdot \sin \phi_1\right) \cdot \sqrt[3]{\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r89812 = lambda1;
double r89813 = theta;
double r89814 = sin(r89813);
double r89815 = delta;
double r89816 = sin(r89815);
double r89817 = r89814 * r89816;
double r89818 = phi1;
double r89819 = cos(r89818);
double r89820 = r89817 * r89819;
double r89821 = cos(r89815);
double r89822 = sin(r89818);
double r89823 = r89822 * r89821;
double r89824 = r89819 * r89816;
double r89825 = cos(r89813);
double r89826 = r89824 * r89825;
double r89827 = r89823 + r89826;
double r89828 = asin(r89827);
double r89829 = sin(r89828);
double r89830 = r89822 * r89829;
double r89831 = r89821 - r89830;
double r89832 = atan2(r89820, r89831);
double r89833 = r89812 + r89832;
return r89833;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r89834 = lambda1;
double r89835 = theta;
double r89836 = sin(r89835);
double r89837 = delta;
double r89838 = sin(r89837);
double r89839 = r89836 * r89838;
double r89840 = phi1;
double r89841 = cos(r89840);
double r89842 = r89839 * r89841;
double r89843 = cos(r89837);
double r89844 = r89843 * r89843;
double r89845 = cos(r89835);
double r89846 = r89841 * r89845;
double r89847 = r89838 * r89846;
double r89848 = sin(r89840);
double r89849 = r89848 * r89843;
double r89850 = r89847 + r89849;
double r89851 = 2.0;
double r89852 = pow(r89850, r89851);
double r89853 = 0.6666666666666666;
double r89854 = pow(r89852, r89853);
double r89855 = r89841 * r89838;
double r89856 = r89855 * r89845;
double r89857 = r89849 + r89856;
double r89858 = asin(r89857);
double r89859 = sin(r89858);
double r89860 = cbrt(r89859);
double r89861 = r89860 * r89860;
double r89862 = pow(r89848, r89851);
double r89863 = r89861 * r89862;
double r89864 = r89854 * r89863;
double r89865 = r89844 - r89864;
double r89866 = cbrt(r89852);
double r89867 = cbrt(r89866);
double r89868 = r89867 * r89867;
double r89869 = r89868 * r89867;
double r89870 = r89869 * r89848;
double r89871 = r89870 * r89860;
double r89872 = r89843 + r89871;
double r89873 = r89865 / r89872;
double r89874 = atan2(r89842, r89873);
double r89875 = r89834 + r89874;
return r89875;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.1
rmApplied add-cube-cbrt0.2
Applied associate-*r*0.2
Simplified0.2
Taylor expanded around inf 0.2
Simplified0.2
rmApplied flip--0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019208
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
:precision binary64
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))