Average Error: 0.2 → 0.2
Time: 15.0s
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}{\sqrt[3]{{\left(\cos delta - \sin \phi_1 \cdot \sin \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}^{3}}}\]
\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}{\sqrt[3]{{\left(\cos delta - \sin \phi_1 \cdot \sin \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)\right)}^{3}}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r104077 = lambda1;
        double r104078 = theta;
        double r104079 = sin(r104078);
        double r104080 = delta;
        double r104081 = sin(r104080);
        double r104082 = r104079 * r104081;
        double r104083 = phi1;
        double r104084 = cos(r104083);
        double r104085 = r104082 * r104084;
        double r104086 = cos(r104080);
        double r104087 = sin(r104083);
        double r104088 = r104087 * r104086;
        double r104089 = r104084 * r104081;
        double r104090 = cos(r104078);
        double r104091 = r104089 * r104090;
        double r104092 = r104088 + r104091;
        double r104093 = asin(r104092);
        double r104094 = sin(r104093);
        double r104095 = r104087 * r104094;
        double r104096 = r104086 - r104095;
        double r104097 = atan2(r104085, r104096);
        double r104098 = r104077 + r104097;
        return r104098;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r104099 = lambda1;
        double r104100 = theta;
        double r104101 = sin(r104100);
        double r104102 = delta;
        double r104103 = sin(r104102);
        double r104104 = r104101 * r104103;
        double r104105 = phi1;
        double r104106 = cos(r104105);
        double r104107 = r104104 * r104106;
        double r104108 = cos(r104102);
        double r104109 = sin(r104105);
        double r104110 = r104109 * r104108;
        double r104111 = r104106 * r104103;
        double r104112 = cos(r104100);
        double r104113 = r104111 * r104112;
        double r104114 = r104110 + r104113;
        double r104115 = asin(r104114);
        double r104116 = expm1(r104115);
        double r104117 = log1p(r104116);
        double r104118 = sin(r104117);
        double r104119 = r104109 * r104118;
        double r104120 = r104108 - r104119;
        double r104121 = 3.0;
        double r104122 = pow(r104120, r104121);
        double r104123 = cbrt(r104122);
        double r104124 = atan2(r104107, r104123);
        double r104125 = r104099 + r104124;
        return r104125;
}

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 add-cbrt-cube0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\color{blue}{\sqrt[3]{\left(\left(\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)\right) \cdot \left(\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)\right)\right) \cdot \left(\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)\right)}}}\]
  4. Simplified0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\sqrt[3]{\color{blue}{{\left(\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)\right)}^{3}}}}\]
  5. Using strategy rm
  6. Applied log1p-expm1-u0.2

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

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

Reproduce

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