\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} - \sqrt[3]{{\left({\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)}^{3}\right)}^{3}}}{\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) + \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r72809 = lambda1;
double r72810 = theta;
double r72811 = sin(r72810);
double r72812 = delta;
double r72813 = sin(r72812);
double r72814 = r72811 * r72813;
double r72815 = phi1;
double r72816 = cos(r72815);
double r72817 = r72814 * r72816;
double r72818 = cos(r72812);
double r72819 = sin(r72815);
double r72820 = r72819 * r72818;
double r72821 = r72816 * r72813;
double r72822 = cos(r72810);
double r72823 = r72821 * r72822;
double r72824 = r72820 + r72823;
double r72825 = asin(r72824);
double r72826 = sin(r72825);
double r72827 = r72819 * r72826;
double r72828 = r72818 - r72827;
double r72829 = atan2(r72817, r72828);
double r72830 = r72809 + r72829;
return r72830;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r72831 = lambda1;
double r72832 = theta;
double r72833 = sin(r72832);
double r72834 = delta;
double r72835 = sin(r72834);
double r72836 = r72833 * r72835;
double r72837 = phi1;
double r72838 = cos(r72837);
double r72839 = r72836 * r72838;
double r72840 = cos(r72834);
double r72841 = 3.0;
double r72842 = pow(r72840, r72841);
double r72843 = sin(r72837);
double r72844 = r72843 * r72840;
double r72845 = r72838 * r72835;
double r72846 = cos(r72832);
double r72847 = r72845 * r72846;
double r72848 = r72844 + r72847;
double r72849 = asin(r72848);
double r72850 = sin(r72849);
double r72851 = r72843 * r72850;
double r72852 = pow(r72851, r72841);
double r72853 = pow(r72852, r72841);
double r72854 = cbrt(r72853);
double r72855 = r72842 - r72854;
double r72856 = r72851 + r72840;
double r72857 = r72851 * r72856;
double r72858 = r72840 * r72840;
double r72859 = r72857 + r72858;
double r72860 = r72855 / r72859;
double r72861 = atan2(r72839, r72860);
double r72862 = r72831 + r72861;
return r72862;
}



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
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020033
(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))))))))))