\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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\frac{\cos delta \cdot \cos delta - \mathsf{fma}\left(\sin delta \cdot \left(\sin delta \cdot \left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \left(\cos theta \cdot \cos \phi_1\right)\right)\right), \sin \phi_1 \cdot \sin \phi_1, \mathsf{fma}\left(\cos delta \cdot \cos delta, \left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right), \left(\sin delta \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta + \left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta\right)\right)\right)}{\mathsf{fma}\left(\sin \phi_1 \cdot \sin \phi_1, \cos delta, \mathsf{fma}\left(\sin delta \cdot \left(\cos theta \cdot \cos \phi_1\right), \sin \phi_1, \cos delta\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3245814 = lambda1;
double r3245815 = theta;
double r3245816 = sin(r3245815);
double r3245817 = delta;
double r3245818 = sin(r3245817);
double r3245819 = r3245816 * r3245818;
double r3245820 = phi1;
double r3245821 = cos(r3245820);
double r3245822 = r3245819 * r3245821;
double r3245823 = cos(r3245817);
double r3245824 = sin(r3245820);
double r3245825 = r3245824 * r3245823;
double r3245826 = r3245821 * r3245818;
double r3245827 = cos(r3245815);
double r3245828 = r3245826 * r3245827;
double r3245829 = r3245825 + r3245828;
double r3245830 = asin(r3245829);
double r3245831 = sin(r3245830);
double r3245832 = r3245824 * r3245831;
double r3245833 = r3245823 - r3245832;
double r3245834 = atan2(r3245822, r3245833);
double r3245835 = r3245814 + r3245834;
return r3245835;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3245836 = lambda1;
double r3245837 = phi1;
double r3245838 = cos(r3245837);
double r3245839 = theta;
double r3245840 = sin(r3245839);
double r3245841 = r3245838 * r3245840;
double r3245842 = delta;
double r3245843 = sin(r3245842);
double r3245844 = r3245841 * r3245843;
double r3245845 = cos(r3245842);
double r3245846 = r3245845 * r3245845;
double r3245847 = cos(r3245839);
double r3245848 = r3245847 * r3245838;
double r3245849 = r3245848 * r3245848;
double r3245850 = r3245843 * r3245849;
double r3245851 = r3245843 * r3245850;
double r3245852 = sin(r3245837);
double r3245853 = r3245852 * r3245852;
double r3245854 = r3245853 * r3245853;
double r3245855 = r3245852 * r3245853;
double r3245856 = r3245843 * r3245855;
double r3245857 = r3245845 * r3245838;
double r3245858 = r3245857 * r3245847;
double r3245859 = r3245858 + r3245858;
double r3245860 = r3245856 * r3245859;
double r3245861 = fma(r3245846, r3245854, r3245860);
double r3245862 = fma(r3245851, r3245853, r3245861);
double r3245863 = r3245846 - r3245862;
double r3245864 = r3245843 * r3245848;
double r3245865 = fma(r3245864, r3245852, r3245845);
double r3245866 = fma(r3245853, r3245845, r3245865);
double r3245867 = r3245863 / r3245866;
double r3245868 = atan2(r3245844, r3245867);
double r3245869 = r3245836 + r3245868;
return r3245869;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.2
rmApplied flip--0.2
Taylor expanded around -inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019152 +o rules:numerics
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))