\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(\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)\right) \cdot \left(\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)\right)}{\cos delta + \sin \phi_1 \cdot \sin \left(\frac{\pi}{2} - \cos^{-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 r88831 = lambda1;
double r88832 = theta;
double r88833 = sin(r88832);
double r88834 = delta;
double r88835 = sin(r88834);
double r88836 = r88833 * r88835;
double r88837 = phi1;
double r88838 = cos(r88837);
double r88839 = r88836 * r88838;
double r88840 = cos(r88834);
double r88841 = sin(r88837);
double r88842 = r88841 * r88840;
double r88843 = r88838 * r88835;
double r88844 = cos(r88832);
double r88845 = r88843 * r88844;
double r88846 = r88842 + r88845;
double r88847 = asin(r88846);
double r88848 = sin(r88847);
double r88849 = r88841 * r88848;
double r88850 = r88840 - r88849;
double r88851 = atan2(r88839, r88850);
double r88852 = r88831 + r88851;
return r88852;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r88853 = lambda1;
double r88854 = theta;
double r88855 = sin(r88854);
double r88856 = delta;
double r88857 = sin(r88856);
double r88858 = r88855 * r88857;
double r88859 = phi1;
double r88860 = cos(r88859);
double r88861 = r88858 * r88860;
double r88862 = cos(r88856);
double r88863 = r88862 * r88862;
double r88864 = sin(r88859);
double r88865 = r88864 * r88862;
double r88866 = r88860 * r88857;
double r88867 = cos(r88854);
double r88868 = r88866 * r88867;
double r88869 = r88865 + r88868;
double r88870 = asin(r88869);
double r88871 = sin(r88870);
double r88872 = r88864 * r88871;
double r88873 = r88872 * r88872;
double r88874 = r88863 - r88873;
double r88875 = atan2(1.0, 0.0);
double r88876 = 2.0;
double r88877 = r88875 / r88876;
double r88878 = acos(r88869);
double r88879 = r88877 - r88878;
double r88880 = sin(r88879);
double r88881 = r88864 * r88880;
double r88882 = r88862 + r88881;
double r88883 = r88874 / r88882;
double r88884 = atan2(r88861, r88883);
double r88885 = r88853 + r88884;
return r88885;
}



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 flip--0.2
rmApplied asin-acos0.2
Final simplification0.2
herbie shell --seed 2020046
(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))))))))))