Average Error: 0.2 → 0.2
Time: 51.6s
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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\frac{\cos delta \cdot \cos delta - \mathsf{fma}\left(\sin delta \cdot \left(\sin delta \cdot \left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \left(\cos theta \cdot \cos \phi_1\right)\right)\right), \sin \phi_1 \cdot \sin \phi_1, \mathsf{fma}\left(\cos delta \cdot \cos delta, \left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right), \left(\sin delta \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta + \left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta\right)\right)\right)}{\mathsf{fma}\left(\sin \phi_1 \cdot \sin \phi_1, \cos delta, \mathsf{fma}\left(\sin delta \cdot \left(\cos theta \cdot \cos \phi_1\right), \sin \phi_1, \cos delta\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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\frac{\cos delta \cdot \cos delta - \mathsf{fma}\left(\sin delta \cdot \left(\sin delta \cdot \left(\left(\cos theta \cdot \cos \phi_1\right) \cdot \left(\cos theta \cdot \cos \phi_1\right)\right)\right), \sin \phi_1 \cdot \sin \phi_1, \mathsf{fma}\left(\cos delta \cdot \cos delta, \left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right), \left(\sin delta \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta + \left(\cos delta \cdot \cos \phi_1\right) \cdot \cos theta\right)\right)\right)}{\mathsf{fma}\left(\sin \phi_1 \cdot \sin \phi_1, \cos delta, \mathsf{fma}\left(\sin delta \cdot \left(\cos theta \cdot \cos \phi_1\right), \sin \phi_1, \cos delta\right)\right)}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3245814 = lambda1;
        double r3245815 = theta;
        double r3245816 = sin(r3245815);
        double r3245817 = delta;
        double r3245818 = sin(r3245817);
        double r3245819 = r3245816 * r3245818;
        double r3245820 = phi1;
        double r3245821 = cos(r3245820);
        double r3245822 = r3245819 * r3245821;
        double r3245823 = cos(r3245817);
        double r3245824 = sin(r3245820);
        double r3245825 = r3245824 * r3245823;
        double r3245826 = r3245821 * r3245818;
        double r3245827 = cos(r3245815);
        double r3245828 = r3245826 * r3245827;
        double r3245829 = r3245825 + r3245828;
        double r3245830 = asin(r3245829);
        double r3245831 = sin(r3245830);
        double r3245832 = r3245824 * r3245831;
        double r3245833 = r3245823 - r3245832;
        double r3245834 = atan2(r3245822, r3245833);
        double r3245835 = r3245814 + r3245834;
        return r3245835;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3245836 = lambda1;
        double r3245837 = phi1;
        double r3245838 = cos(r3245837);
        double r3245839 = theta;
        double r3245840 = sin(r3245839);
        double r3245841 = r3245838 * r3245840;
        double r3245842 = delta;
        double r3245843 = sin(r3245842);
        double r3245844 = r3245841 * r3245843;
        double r3245845 = cos(r3245842);
        double r3245846 = r3245845 * r3245845;
        double r3245847 = cos(r3245839);
        double r3245848 = r3245847 * r3245838;
        double r3245849 = r3245848 * r3245848;
        double r3245850 = r3245843 * r3245849;
        double r3245851 = r3245843 * r3245850;
        double r3245852 = sin(r3245837);
        double r3245853 = r3245852 * r3245852;
        double r3245854 = r3245853 * r3245853;
        double r3245855 = r3245852 * r3245853;
        double r3245856 = r3245843 * r3245855;
        double r3245857 = r3245845 * r3245838;
        double r3245858 = r3245857 * r3245847;
        double r3245859 = r3245858 + r3245858;
        double r3245860 = r3245856 * r3245859;
        double r3245861 = fma(r3245846, r3245854, r3245860);
        double r3245862 = fma(r3245851, r3245853, r3245861);
        double r3245863 = r3245846 - r3245862;
        double r3245864 = r3245843 * r3245848;
        double r3245865 = fma(r3245864, r3245852, r3245845);
        double r3245866 = fma(r3245853, r3245845, r3245865);
        double r3245867 = r3245863 / r3245866;
        double r3245868 = atan2(r3245844, r3245867);
        double r3245869 = r3245836 + r3245868;
        return r3245869;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

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. Simplified0.2

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)} + \lambda_1}\]
  3. Using strategy rm
  4. Applied flip--0.2

    \[\leadsto \tan^{-1}_* \frac{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\color{blue}{\frac{\cos delta \cdot \cos delta - \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)\right)}{\cos delta + \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)}}} + \lambda_1\]
  5. Taylor expanded around -inf 0.2

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

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

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

Reproduce

herbie shell --seed 2019152 +o rules:numerics
(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))))))))))