\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)}{\cos delta - \left(\sin \phi_1 \cdot \left(\left(\sin delta \cdot \cos theta\right) \cdot \cos \phi_1\right) + \sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right)\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1724772 = lambda1;
double r1724773 = theta;
double r1724774 = sin(r1724773);
double r1724775 = delta;
double r1724776 = sin(r1724775);
double r1724777 = r1724774 * r1724776;
double r1724778 = phi1;
double r1724779 = cos(r1724778);
double r1724780 = r1724777 * r1724779;
double r1724781 = cos(r1724775);
double r1724782 = sin(r1724778);
double r1724783 = r1724782 * r1724781;
double r1724784 = r1724779 * r1724776;
double r1724785 = cos(r1724773);
double r1724786 = r1724784 * r1724785;
double r1724787 = r1724783 + r1724786;
double r1724788 = asin(r1724787);
double r1724789 = sin(r1724788);
double r1724790 = r1724782 * r1724789;
double r1724791 = r1724781 - r1724790;
double r1724792 = atan2(r1724780, r1724791);
double r1724793 = r1724772 + r1724792;
return r1724793;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1724794 = lambda1;
double r1724795 = phi1;
double r1724796 = cos(r1724795);
double r1724797 = delta;
double r1724798 = sin(r1724797);
double r1724799 = theta;
double r1724800 = sin(r1724799);
double r1724801 = r1724798 * r1724800;
double r1724802 = r1724796 * r1724801;
double r1724803 = cos(r1724797);
double r1724804 = sin(r1724795);
double r1724805 = cos(r1724799);
double r1724806 = r1724798 * r1724805;
double r1724807 = r1724806 * r1724796;
double r1724808 = r1724804 * r1724807;
double r1724809 = r1724803 * r1724804;
double r1724810 = r1724804 * r1724809;
double r1724811 = r1724808 + r1724810;
double r1724812 = r1724803 - r1724811;
double r1724813 = atan2(r1724802, r1724812);
double r1724814 = r1724794 + r1724813;
return r1724814;
}



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
Taylor expanded around inf 0.2
rmApplied distribute-lft-in0.2
Final simplification0.2
herbie shell --seed 2019151
(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))))))))))