\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}{\cos delta - \sin \phi_1 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r71895 = lambda1;
double r71896 = theta;
double r71897 = sin(r71896);
double r71898 = delta;
double r71899 = sin(r71898);
double r71900 = r71897 * r71899;
double r71901 = phi1;
double r71902 = cos(r71901);
double r71903 = r71900 * r71902;
double r71904 = cos(r71898);
double r71905 = sin(r71901);
double r71906 = r71905 * r71904;
double r71907 = r71902 * r71899;
double r71908 = cos(r71896);
double r71909 = r71907 * r71908;
double r71910 = r71906 + r71909;
double r71911 = asin(r71910);
double r71912 = sin(r71911);
double r71913 = r71905 * r71912;
double r71914 = r71904 - r71913;
double r71915 = atan2(r71903, r71914);
double r71916 = r71895 + r71915;
return r71916;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r71917 = lambda1;
double r71918 = theta;
double r71919 = sin(r71918);
double r71920 = delta;
double r71921 = sin(r71920);
double r71922 = r71919 * r71921;
double r71923 = phi1;
double r71924 = cos(r71923);
double r71925 = r71922 * r71924;
double r71926 = cos(r71920);
double r71927 = sin(r71923);
double r71928 = cos(r71918);
double r71929 = r71924 * r71928;
double r71930 = r71921 * r71929;
double r71931 = r71927 * r71926;
double r71932 = r71930 + r71931;
double r71933 = r71927 * r71932;
double r71934 = r71926 - r71933;
double r71935 = atan2(r71925, r71934);
double r71936 = r71917 + r71935;
return r71936;
}



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 add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
rmApplied unpow-prod-down0.2
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2019326
(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))))))))))