\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{{\left(\cos delta\right)}^{3} - \left(3 \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left(\cos delta \cdot \left({\left(\sin delta\right)}^{2} \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right) + \left({\left(\sin \phi_1\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin delta\right)}^{3}\right)\right) + \left(\sqrt[3]{{\left(\log \left(e^{{\left(\sin \phi_1\right)}^{6}}\right)\right)}^{3}} \cdot {\left(\cos delta\right)}^{3} + 3 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left(\cos \phi_1 \cdot \left(\sin delta \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right)\right)\right)\right)}{{\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2} + \left({\left(\cos delta\right)}^{2} + \left(2 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos \phi_1 \cdot \left(\cos delta \cdot \left(\sin delta \cdot \cos theta\right)\right)\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin delta\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\cos delta \cdot \left(\sin delta \cdot \cos theta\right)\right)\right)\right)\right)\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r117777 = lambda1;
double r117778 = theta;
double r117779 = sin(r117778);
double r117780 = delta;
double r117781 = sin(r117780);
double r117782 = r117779 * r117781;
double r117783 = phi1;
double r117784 = cos(r117783);
double r117785 = r117782 * r117784;
double r117786 = cos(r117780);
double r117787 = sin(r117783);
double r117788 = r117787 * r117786;
double r117789 = r117784 * r117781;
double r117790 = cos(r117778);
double r117791 = r117789 * r117790;
double r117792 = r117788 + r117791;
double r117793 = asin(r117792);
double r117794 = sin(r117793);
double r117795 = r117787 * r117794;
double r117796 = r117786 - r117795;
double r117797 = atan2(r117785, r117796);
double r117798 = r117777 + r117797;
return r117798;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r117799 = lambda1;
double r117800 = theta;
double r117801 = sin(r117800);
double r117802 = delta;
double r117803 = sin(r117802);
double r117804 = r117801 * r117803;
double r117805 = phi1;
double r117806 = cos(r117805);
double r117807 = r117804 * r117806;
double r117808 = cos(r117802);
double r117809 = 3.0;
double r117810 = pow(r117808, r117809);
double r117811 = sin(r117805);
double r117812 = 4.0;
double r117813 = pow(r117811, r117812);
double r117814 = 2.0;
double r117815 = pow(r117806, r117814);
double r117816 = pow(r117803, r117814);
double r117817 = cos(r117800);
double r117818 = pow(r117817, r117814);
double r117819 = r117816 * r117818;
double r117820 = r117808 * r117819;
double r117821 = r117815 * r117820;
double r117822 = r117813 * r117821;
double r117823 = r117809 * r117822;
double r117824 = pow(r117811, r117809);
double r117825 = pow(r117806, r117809);
double r117826 = pow(r117817, r117809);
double r117827 = pow(r117803, r117809);
double r117828 = r117826 * r117827;
double r117829 = r117825 * r117828;
double r117830 = r117824 * r117829;
double r117831 = 6.0;
double r117832 = pow(r117811, r117831);
double r117833 = exp(r117832);
double r117834 = log(r117833);
double r117835 = pow(r117834, r117809);
double r117836 = cbrt(r117835);
double r117837 = r117836 * r117810;
double r117838 = 5.0;
double r117839 = pow(r117811, r117838);
double r117840 = pow(r117808, r117814);
double r117841 = r117840 * r117817;
double r117842 = r117803 * r117841;
double r117843 = r117806 * r117842;
double r117844 = r117839 * r117843;
double r117845 = r117809 * r117844;
double r117846 = r117837 + r117845;
double r117847 = r117830 + r117846;
double r117848 = r117823 + r117847;
double r117849 = r117810 - r117848;
double r117850 = r117813 * r117840;
double r117851 = r117803 * r117817;
double r117852 = r117808 * r117851;
double r117853 = r117806 * r117852;
double r117854 = r117824 * r117853;
double r117855 = r117814 * r117854;
double r117856 = pow(r117811, r117814);
double r117857 = r117818 * r117816;
double r117858 = r117815 * r117857;
double r117859 = r117856 * r117858;
double r117860 = r117856 * r117840;
double r117861 = r117811 * r117853;
double r117862 = r117860 + r117861;
double r117863 = r117859 + r117862;
double r117864 = r117855 + r117863;
double r117865 = r117840 + r117864;
double r117866 = r117850 + r117865;
double r117867 = r117849 / r117866;
double r117868 = atan2(r117807, r117867);
double r117869 = r117799 + r117868;
return r117869;
}



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 flip3--0.2
Simplified0.2
Taylor expanded around -inf 0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
rmApplied add-log-exp0.2
Final simplification0.2
herbie shell --seed 2020003
(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))))))))))