\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(\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}}{\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(\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)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r86766 = lambda1;
double r86767 = theta;
double r86768 = sin(r86767);
double r86769 = delta;
double r86770 = sin(r86769);
double r86771 = r86768 * r86770;
double r86772 = phi1;
double r86773 = cos(r86772);
double r86774 = r86771 * r86773;
double r86775 = cos(r86769);
double r86776 = sin(r86772);
double r86777 = r86776 * r86775;
double r86778 = r86773 * r86770;
double r86779 = cos(r86767);
double r86780 = r86778 * r86779;
double r86781 = r86777 + r86780;
double r86782 = asin(r86781);
double r86783 = sin(r86782);
double r86784 = r86776 * r86783;
double r86785 = r86775 - r86784;
double r86786 = atan2(r86774, r86785);
double r86787 = r86766 + r86786;
return r86787;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r86788 = lambda1;
double r86789 = theta;
double r86790 = sin(r86789);
double r86791 = delta;
double r86792 = sin(r86791);
double r86793 = r86790 * r86792;
double r86794 = phi1;
double r86795 = cos(r86794);
double r86796 = r86793 * r86795;
double r86797 = cos(r86791);
double r86798 = 3.0;
double r86799 = pow(r86797, r86798);
double r86800 = sin(r86794);
double r86801 = r86800 * r86797;
double r86802 = r86795 * r86792;
double r86803 = cos(r86789);
double r86804 = r86802 * r86803;
double r86805 = r86801 + r86804;
double r86806 = asin(r86805);
double r86807 = sin(r86806);
double r86808 = r86800 * r86807;
double r86809 = pow(r86808, r86798);
double r86810 = r86799 - r86809;
double r86811 = r86797 * r86797;
double r86812 = atan2(1.0, 0.0);
double r86813 = 2.0;
double r86814 = r86812 / r86813;
double r86815 = acos(r86805);
double r86816 = r86814 - r86815;
double r86817 = sin(r86816);
double r86818 = r86800 * r86817;
double r86819 = r86797 + r86818;
double r86820 = r86808 * r86819;
double r86821 = r86811 + r86820;
double r86822 = r86810 / r86821;
double r86823 = atan2(r86796, r86822);
double r86824 = r86788 + r86823;
return r86824;
}



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 asin-acos0.2
Final simplification0.2
herbie shell --seed 2019347
(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))))))))))