Average Error: 0.2 → 0.2
Time: 15.2s
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 r84838 = lambda1;
        double r84839 = theta;
        double r84840 = sin(r84839);
        double r84841 = delta;
        double r84842 = sin(r84841);
        double r84843 = r84840 * r84842;
        double r84844 = phi1;
        double r84845 = cos(r84844);
        double r84846 = r84843 * r84845;
        double r84847 = cos(r84841);
        double r84848 = sin(r84844);
        double r84849 = r84848 * r84847;
        double r84850 = r84845 * r84842;
        double r84851 = cos(r84839);
        double r84852 = r84850 * r84851;
        double r84853 = r84849 + r84852;
        double r84854 = asin(r84853);
        double r84855 = sin(r84854);
        double r84856 = r84848 * r84855;
        double r84857 = r84847 - r84856;
        double r84858 = atan2(r84846, r84857);
        double r84859 = r84838 + r84858;
        return r84859;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r84860 = lambda1;
        double r84861 = theta;
        double r84862 = sin(r84861);
        double r84863 = delta;
        double r84864 = sin(r84863);
        double r84865 = r84862 * r84864;
        double r84866 = phi1;
        double r84867 = cos(r84866);
        double r84868 = r84865 * r84867;
        double r84869 = cos(r84863);
        double r84870 = sin(r84866);
        double r84871 = r84870 * r84869;
        double r84872 = r84867 * r84864;
        double r84873 = cos(r84861);
        double r84874 = r84872 * r84873;
        double r84875 = r84871 + r84874;
        double r84876 = asin(r84875);
        double r84877 = expm1(r84876);
        double r84878 = log1p(r84877);
        double r84879 = sin(r84878);
        double r84880 = r84870 * r84879;
        double r84881 = r84869 - r84880;
        double r84882 = 3.0;
        double r84883 = pow(r84881, r84882);
        double r84884 = cbrt(r84883);
        double r84885 = atan2(r84868, r84884);
        double r84886 = r84860 + r84885;
        return r84886;
}

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))))))))))