Average Error: 0.2 → 0.2
Time: 16.1s
Precision: 64
\[\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 - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}\right)}\]
\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 - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r109858 = lambda1;
        double r109859 = theta;
        double r109860 = sin(r109859);
        double r109861 = delta;
        double r109862 = sin(r109861);
        double r109863 = r109860 * r109862;
        double r109864 = phi1;
        double r109865 = cos(r109864);
        double r109866 = r109863 * r109865;
        double r109867 = cos(r109861);
        double r109868 = sin(r109864);
        double r109869 = r109868 * r109867;
        double r109870 = r109865 * r109862;
        double r109871 = cos(r109859);
        double r109872 = r109870 * r109871;
        double r109873 = r109869 + r109872;
        double r109874 = asin(r109873);
        double r109875 = sin(r109874);
        double r109876 = r109868 * r109875;
        double r109877 = r109867 - r109876;
        double r109878 = atan2(r109866, r109877);
        double r109879 = r109858 + r109878;
        return r109879;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r109880 = lambda1;
        double r109881 = theta;
        double r109882 = sin(r109881);
        double r109883 = delta;
        double r109884 = sin(r109883);
        double r109885 = r109882 * r109884;
        double r109886 = phi1;
        double r109887 = cos(r109886);
        double r109888 = r109885 * r109887;
        double r109889 = cos(r109883);
        double r109890 = sin(r109886);
        double r109891 = exp(r109890);
        double r109892 = r109890 * r109889;
        double r109893 = r109887 * r109884;
        double r109894 = cos(r109881);
        double r109895 = r109893 * r109894;
        double r109896 = r109892 + r109895;
        double r109897 = acos(r109896);
        double r109898 = -r109897;
        double r109899 = cos(r109898);
        double r109900 = log1p(r109899);
        double r109901 = expm1(r109900);
        double r109902 = pow(r109891, r109901);
        double r109903 = log(r109902);
        double r109904 = r109889 - r109903;
        double r109905 = atan2(r109888, r109904);
        double r109906 = r109880 + r109905;
        return r109906;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\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)}\]
  2. Using strategy rm
  3. Applied asin-acos0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \color{blue}{\left(\frac{\pi}{2} - \cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}}\]
  4. Using strategy rm
  5. Applied add-log-exp0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \color{blue}{\log \left(e^{\sin \phi_1 \cdot \sin \left(\frac{\pi}{2} - \cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}}\]
  6. Simplified0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \color{blue}{\left({\left(e^{\sin \phi_1}\right)}^{\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}\right)}}\]
  7. Using strategy rm
  8. Applied expm1-log1p-u0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left({\left(e^{\sin \phi_1}\right)}^{\color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}}\right)}\]
  9. Final simplification0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}\right)}\]

Reproduce

herbie shell --seed 2020001 +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))))))))))