\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)}{\frac{\sqrt[3]{\left(\cos delta \cdot \left(\cos delta \cdot \cos delta\right)\right) \cdot \left(\left(\cos delta \cdot \cos delta\right) \cdot \left(\left(\cos delta \cdot \cos delta\right) \cdot \left(\cos delta \cdot \cos delta\right)\right)\right)} - \left(\left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \sin delta + \cos delta \cdot \sin \phi_1\right) \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \sin delta + \cos delta \cdot \sin \phi_1\right) \cdot \left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \sin delta + \cos delta \cdot \sin \phi_1\right)\right)}{\cos delta \cdot \cos delta + \left(\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) + \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) \cdot \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3734913 = lambda1;
double r3734914 = theta;
double r3734915 = sin(r3734914);
double r3734916 = delta;
double r3734917 = sin(r3734916);
double r3734918 = r3734915 * r3734917;
double r3734919 = phi1;
double r3734920 = cos(r3734919);
double r3734921 = r3734918 * r3734920;
double r3734922 = cos(r3734916);
double r3734923 = sin(r3734919);
double r3734924 = r3734923 * r3734922;
double r3734925 = r3734920 * r3734917;
double r3734926 = cos(r3734914);
double r3734927 = r3734925 * r3734926;
double r3734928 = r3734924 + r3734927;
double r3734929 = asin(r3734928);
double r3734930 = sin(r3734929);
double r3734931 = r3734923 * r3734930;
double r3734932 = r3734922 - r3734931;
double r3734933 = atan2(r3734921, r3734932);
double r3734934 = r3734913 + r3734933;
return r3734934;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3734935 = lambda1;
double r3734936 = phi1;
double r3734937 = cos(r3734936);
double r3734938 = delta;
double r3734939 = sin(r3734938);
double r3734940 = theta;
double r3734941 = sin(r3734940);
double r3734942 = r3734939 * r3734941;
double r3734943 = r3734937 * r3734942;
double r3734944 = cos(r3734938);
double r3734945 = r3734944 * r3734944;
double r3734946 = r3734944 * r3734945;
double r3734947 = r3734945 * r3734945;
double r3734948 = r3734945 * r3734947;
double r3734949 = r3734946 * r3734948;
double r3734950 = cbrt(r3734949);
double r3734951 = cos(r3734940);
double r3734952 = r3734951 * r3734937;
double r3734953 = r3734952 * r3734939;
double r3734954 = sin(r3734936);
double r3734955 = r3734944 * r3734954;
double r3734956 = r3734953 + r3734955;
double r3734957 = r3734954 * r3734954;
double r3734958 = r3734954 * r3734957;
double r3734959 = r3734956 * r3734958;
double r3734960 = r3734956 * r3734956;
double r3734961 = r3734959 * r3734960;
double r3734962 = r3734950 - r3734961;
double r3734963 = r3734937 * r3734939;
double r3734964 = r3734951 * r3734963;
double r3734965 = r3734955 + r3734964;
double r3734966 = asin(r3734965);
double r3734967 = sin(r3734966);
double r3734968 = r3734954 * r3734967;
double r3734969 = r3734968 * r3734968;
double r3734970 = r3734968 * r3734944;
double r3734971 = r3734969 + r3734970;
double r3734972 = r3734945 + r3734971;
double r3734973 = r3734962 / r3734972;
double r3734974 = atan2(r3734943, r3734973);
double r3734975 = r3734935 + r3734974;
return r3734975;
}



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
Taylor expanded around inf 0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019169
(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))))))))))