\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{{\left(\cos delta\right)}^{3} - {\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right)\right)}^{3}}{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3379815 = lambda1;
double r3379816 = theta;
double r3379817 = sin(r3379816);
double r3379818 = delta;
double r3379819 = sin(r3379818);
double r3379820 = r3379817 * r3379819;
double r3379821 = phi1;
double r3379822 = cos(r3379821);
double r3379823 = r3379820 * r3379822;
double r3379824 = cos(r3379818);
double r3379825 = sin(r3379821);
double r3379826 = r3379825 * r3379824;
double r3379827 = r3379822 * r3379819;
double r3379828 = cos(r3379816);
double r3379829 = r3379827 * r3379828;
double r3379830 = r3379826 + r3379829;
double r3379831 = asin(r3379830);
double r3379832 = sin(r3379831);
double r3379833 = r3379825 * r3379832;
double r3379834 = r3379824 - r3379833;
double r3379835 = atan2(r3379823, r3379834);
double r3379836 = r3379815 + r3379835;
return r3379836;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3379837 = lambda1;
double r3379838 = phi1;
double r3379839 = cos(r3379838);
double r3379840 = delta;
double r3379841 = sin(r3379840);
double r3379842 = theta;
double r3379843 = sin(r3379842);
double r3379844 = r3379841 * r3379843;
double r3379845 = r3379839 * r3379844;
double r3379846 = cos(r3379840);
double r3379847 = 3.0;
double r3379848 = pow(r3379846, r3379847);
double r3379849 = sin(r3379838);
double r3379850 = cos(r3379842);
double r3379851 = r3379839 * r3379841;
double r3379852 = r3379849 * r3379846;
double r3379853 = fma(r3379850, r3379851, r3379852);
double r3379854 = asin(r3379853);
double r3379855 = sin(r3379854);
double r3379856 = r3379849 * r3379855;
double r3379857 = expm1(r3379856);
double r3379858 = log1p(r3379857);
double r3379859 = pow(r3379858, r3379847);
double r3379860 = r3379848 - r3379859;
double r3379861 = r3379858 * r3379858;
double r3379862 = r3379858 * r3379846;
double r3379863 = r3379861 + r3379862;
double r3379864 = r3379846 * r3379846;
double r3379865 = r3379863 + r3379864;
double r3379866 = r3379860 / r3379865;
double r3379867 = atan2(r3379845, r3379866);
double r3379868 = r3379837 + r3379867;
return r3379868;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied log1p-expm1-u0.2
Simplified0.2
rmApplied flip3--0.2
Final simplification0.2
herbie shell --seed 2019151 +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))))))))))