\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(\left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \sin \phi_1\right) \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \sin \phi_1\right) + \cos delta \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \sin \phi_1\right)\right)}{\frac{{\left(\cos delta\right)}^{2} + \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \sin \phi_1 + \cos delta\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 \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \sin \phi_1}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r104843 = lambda1;
double r104844 = theta;
double r104845 = sin(r104844);
double r104846 = delta;
double r104847 = sin(r104846);
double r104848 = r104845 * r104847;
double r104849 = phi1;
double r104850 = cos(r104849);
double r104851 = r104848 * r104850;
double r104852 = cos(r104846);
double r104853 = sin(r104849);
double r104854 = r104853 * r104852;
double r104855 = r104850 * r104847;
double r104856 = cos(r104844);
double r104857 = r104855 * r104856;
double r104858 = r104854 + r104857;
double r104859 = asin(r104858);
double r104860 = sin(r104859);
double r104861 = r104853 * r104860;
double r104862 = r104852 - r104861;
double r104863 = atan2(r104851, r104862);
double r104864 = r104843 + r104863;
return r104864;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r104865 = lambda1;
double r104866 = theta;
double r104867 = sin(r104866);
double r104868 = delta;
double r104869 = sin(r104868);
double r104870 = r104867 * r104869;
double r104871 = phi1;
double r104872 = cos(r104871);
double r104873 = r104870 * r104872;
double r104874 = cos(r104868);
double r104875 = r104874 * r104874;
double r104876 = sin(r104871);
double r104877 = r104876 * r104874;
double r104878 = r104872 * r104869;
double r104879 = cos(r104866);
double r104880 = r104878 * r104879;
double r104881 = r104877 + r104880;
double r104882 = asin(r104881);
double r104883 = sin(r104882);
double r104884 = r104883 * r104876;
double r104885 = r104884 * r104884;
double r104886 = r104874 * r104884;
double r104887 = r104885 + r104886;
double r104888 = r104875 + r104887;
double r104889 = 2.0;
double r104890 = pow(r104874, r104889);
double r104891 = r104884 + r104874;
double r104892 = r104876 * r104883;
double r104893 = r104891 * r104892;
double r104894 = r104890 + r104893;
double r104895 = r104874 - r104884;
double r104896 = r104894 / r104895;
double r104897 = r104888 / r104896;
double r104898 = atan2(r104873, r104897);
double r104899 = r104865 + r104898;
return r104899;
}



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 *-un-lft-identity0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
rmApplied difference-cubes0.2
Applied associate-/l*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019304
(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))))))))))