Average Error: 0.2 → 0.1
Time: 32.4s
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{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\cos delta \cdot \left(\cos \phi_1 \cdot \cos \phi_1\right) - \sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\cos theta \cdot \sin 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{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\cos delta \cdot \left(\cos \phi_1 \cdot \cos \phi_1\right) - \sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\cos theta \cdot \sin delta\right)\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r53858 = lambda1;
        double r53859 = theta;
        double r53860 = sin(r53859);
        double r53861 = delta;
        double r53862 = sin(r53861);
        double r53863 = r53860 * r53862;
        double r53864 = phi1;
        double r53865 = cos(r53864);
        double r53866 = r53863 * r53865;
        double r53867 = cos(r53861);
        double r53868 = sin(r53864);
        double r53869 = r53868 * r53867;
        double r53870 = r53865 * r53862;
        double r53871 = cos(r53859);
        double r53872 = r53870 * r53871;
        double r53873 = r53869 + r53872;
        double r53874 = asin(r53873);
        double r53875 = sin(r53874);
        double r53876 = r53868 * r53875;
        double r53877 = r53867 - r53876;
        double r53878 = atan2(r53866, r53877);
        double r53879 = r53858 + r53878;
        return r53879;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r53880 = lambda1;
        double r53881 = delta;
        double r53882 = sin(r53881);
        double r53883 = phi1;
        double r53884 = cos(r53883);
        double r53885 = theta;
        double r53886 = sin(r53885);
        double r53887 = r53884 * r53886;
        double r53888 = r53882 * r53887;
        double r53889 = cos(r53881);
        double r53890 = r53884 * r53884;
        double r53891 = r53889 * r53890;
        double r53892 = sin(r53883);
        double r53893 = cos(r53885);
        double r53894 = r53893 * r53882;
        double r53895 = r53884 * r53894;
        double r53896 = r53892 * r53895;
        double r53897 = r53891 - r53896;
        double r53898 = atan2(r53888, r53897);
        double r53899 = r53880 + r53898;
        return r53899;
}

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. Taylor expanded around inf 0.2

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

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

    \[\leadsto \lambda_1 + \color{blue}{\tan^{-1}_* \frac{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\cos delta - \left({\left(\sin \phi_1\right)}^{2} \cdot \cos delta + \sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\cos theta \cdot \sin delta\right)\right)\right)}}\]
  5. Using strategy rm
  6. Applied associate--r+0.2

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin delta \cdot \left(\cos \phi_1 \cdot \sin theta\right)}{\left(\color{blue}{1 \cdot \cos delta} - {\left(\sin \phi_1\right)}^{2} \cdot \cos delta\right) - \sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\cos theta \cdot \sin delta\right)\right)}\]
  9. Applied distribute-rgt-out--0.2

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

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

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

Reproduce

herbie shell --seed 2019212 
(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))))))))))