\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({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}{{\left(\cos delta\right)}^{2} + \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left(\sin \phi_1 \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) + \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r132763 = lambda1;
double r132764 = theta;
double r132765 = sin(r132764);
double r132766 = delta;
double r132767 = sin(r132766);
double r132768 = r132765 * r132767;
double r132769 = phi1;
double r132770 = cos(r132769);
double r132771 = r132768 * r132770;
double r132772 = cos(r132766);
double r132773 = sin(r132769);
double r132774 = r132773 * r132772;
double r132775 = r132770 * r132767;
double r132776 = cos(r132764);
double r132777 = r132775 * r132776;
double r132778 = r132774 + r132777;
double r132779 = asin(r132778);
double r132780 = sin(r132779);
double r132781 = r132773 * r132780;
double r132782 = r132772 - r132781;
double r132783 = atan2(r132771, r132782);
double r132784 = r132763 + r132783;
return r132784;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r132785 = lambda1;
double r132786 = theta;
double r132787 = sin(r132786);
double r132788 = delta;
double r132789 = sin(r132788);
double r132790 = r132787 * r132789;
double r132791 = phi1;
double r132792 = cos(r132791);
double r132793 = r132790 * r132792;
double r132794 = cos(r132788);
double r132795 = 3.0;
double r132796 = pow(r132794, r132795);
double r132797 = pow(r132789, r132795);
double r132798 = pow(r132792, r132795);
double r132799 = cos(r132786);
double r132800 = pow(r132799, r132795);
double r132801 = sin(r132791);
double r132802 = pow(r132801, r132795);
double r132803 = r132800 * r132802;
double r132804 = r132798 * r132803;
double r132805 = r132797 * r132804;
double r132806 = 6.0;
double r132807 = pow(r132801, r132806);
double r132808 = r132807 * r132796;
double r132809 = 5.0;
double r132810 = pow(r132801, r132809);
double r132811 = 2.0;
double r132812 = pow(r132794, r132811);
double r132813 = r132812 * r132799;
double r132814 = r132810 * r132813;
double r132815 = r132792 * r132814;
double r132816 = r132789 * r132815;
double r132817 = r132795 * r132816;
double r132818 = pow(r132789, r132811);
double r132819 = pow(r132792, r132811);
double r132820 = 4.0;
double r132821 = pow(r132801, r132820);
double r132822 = pow(r132799, r132811);
double r132823 = r132794 * r132822;
double r132824 = r132821 * r132823;
double r132825 = r132819 * r132824;
double r132826 = r132818 * r132825;
double r132827 = r132795 * r132826;
double r132828 = r132817 + r132827;
double r132829 = r132808 + r132828;
double r132830 = r132805 + r132829;
double r132831 = r132796 - r132830;
double r132832 = r132794 * r132799;
double r132833 = r132801 * r132832;
double r132834 = r132792 * r132833;
double r132835 = r132789 * r132834;
double r132836 = pow(r132801, r132811);
double r132837 = r132822 * r132836;
double r132838 = r132819 * r132837;
double r132839 = r132818 * r132838;
double r132840 = r132836 * r132812;
double r132841 = r132802 * r132832;
double r132842 = r132792 * r132841;
double r132843 = r132789 * r132842;
double r132844 = r132811 * r132843;
double r132845 = r132821 * r132812;
double r132846 = r132844 + r132845;
double r132847 = r132840 + r132846;
double r132848 = r132839 + r132847;
double r132849 = r132835 + r132848;
double r132850 = r132812 + r132849;
double r132851 = r132831 / r132850;
double r132852 = atan2(r132793, r132851);
double r132853 = r132785 + r132852;
return r132853;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.2
rmApplied flip3--0.2
Simplified0.2
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2020059 +o rules:numerics
(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))))))))))