\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 - \sin \phi_1 \cdot \sin \left(\sqrt[3]{{\left(\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)\right)}^{3}}\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sqrt[3]{{\left(\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)\right)}^{3}}\right), \cos delta\right)}{\mathsf{fma}\left(\sin \phi_1, \sin \left(\sqrt[3]{\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)} \cdot \sqrt[3]{\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right) \cdot \sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}\right), \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r74934 = lambda1;
double r74935 = theta;
double r74936 = sin(r74935);
double r74937 = delta;
double r74938 = sin(r74937);
double r74939 = r74936 * r74938;
double r74940 = phi1;
double r74941 = cos(r74940);
double r74942 = r74939 * r74941;
double r74943 = cos(r74937);
double r74944 = sin(r74940);
double r74945 = r74944 * r74943;
double r74946 = r74941 * r74938;
double r74947 = cos(r74935);
double r74948 = r74946 * r74947;
double r74949 = r74945 + r74948;
double r74950 = asin(r74949);
double r74951 = sin(r74950);
double r74952 = r74944 * r74951;
double r74953 = r74943 - r74952;
double r74954 = atan2(r74942, r74953);
double r74955 = r74934 + r74954;
return r74955;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r74956 = lambda1;
double r74957 = theta;
double r74958 = sin(r74957);
double r74959 = delta;
double r74960 = sin(r74959);
double r74961 = r74958 * r74960;
double r74962 = phi1;
double r74963 = cos(r74962);
double r74964 = r74961 * r74963;
double r74965 = cos(r74959);
double r74966 = sin(r74962);
double r74967 = cos(r74957);
double r74968 = r74963 * r74967;
double r74969 = r74960 * r74968;
double r74970 = r74966 * r74965;
double r74971 = r74969 + r74970;
double r74972 = asin(r74971);
double r74973 = 3.0;
double r74974 = pow(r74972, r74973);
double r74975 = cbrt(r74974);
double r74976 = sin(r74975);
double r74977 = r74966 * r74976;
double r74978 = r74965 - r74977;
double r74979 = fma(r74966, r74976, r74965);
double r74980 = r74978 * r74979;
double r74981 = cbrt(r74972);
double r74982 = r74972 * r74972;
double r74983 = cbrt(r74982);
double r74984 = r74981 * r74983;
double r74985 = sin(r74984);
double r74986 = fma(r74966, r74985, r74965);
double r74987 = r74980 / r74986;
double r74988 = atan2(r74964, r74987);
double r74989 = r74956 + r74988;
return r74989;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
rmApplied flip--0.2
Simplified0.2
Simplified0.2
rmApplied cube-mult0.2
Applied cbrt-prod0.2
Final simplification0.2
herbie shell --seed 2019356 +o rules:numerics
(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))))))))))