Average Error: 0.2 → 0.2
Time: 56.5s
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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{{\left(\cos delta\right)}^{3} - {\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right)\right)}^{3}}{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \cos delta\right) + \cos delta \cdot \cos delta}}\]
\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{{\left(\cos delta\right)}^{3} - {\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right)\right)}^{3}}{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) + \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)\right) \cdot \cos delta\right) + \cos delta \cdot \cos delta}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3379815 = lambda1;
        double r3379816 = theta;
        double r3379817 = sin(r3379816);
        double r3379818 = delta;
        double r3379819 = sin(r3379818);
        double r3379820 = r3379817 * r3379819;
        double r3379821 = phi1;
        double r3379822 = cos(r3379821);
        double r3379823 = r3379820 * r3379822;
        double r3379824 = cos(r3379818);
        double r3379825 = sin(r3379821);
        double r3379826 = r3379825 * r3379824;
        double r3379827 = r3379822 * r3379819;
        double r3379828 = cos(r3379816);
        double r3379829 = r3379827 * r3379828;
        double r3379830 = r3379826 + r3379829;
        double r3379831 = asin(r3379830);
        double r3379832 = sin(r3379831);
        double r3379833 = r3379825 * r3379832;
        double r3379834 = r3379824 - r3379833;
        double r3379835 = atan2(r3379823, r3379834);
        double r3379836 = r3379815 + r3379835;
        return r3379836;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3379837 = lambda1;
        double r3379838 = phi1;
        double r3379839 = cos(r3379838);
        double r3379840 = delta;
        double r3379841 = sin(r3379840);
        double r3379842 = theta;
        double r3379843 = sin(r3379842);
        double r3379844 = r3379841 * r3379843;
        double r3379845 = r3379839 * r3379844;
        double r3379846 = cos(r3379840);
        double r3379847 = 3.0;
        double r3379848 = pow(r3379846, r3379847);
        double r3379849 = sin(r3379838);
        double r3379850 = cos(r3379842);
        double r3379851 = r3379839 * r3379841;
        double r3379852 = r3379849 * r3379846;
        double r3379853 = fma(r3379850, r3379851, r3379852);
        double r3379854 = asin(r3379853);
        double r3379855 = sin(r3379854);
        double r3379856 = r3379849 * r3379855;
        double r3379857 = expm1(r3379856);
        double r3379858 = log1p(r3379857);
        double r3379859 = pow(r3379858, r3379847);
        double r3379860 = r3379848 - r3379859;
        double r3379861 = r3379858 * r3379858;
        double r3379862 = r3379858 * r3379846;
        double r3379863 = r3379861 + r3379862;
        double r3379864 = r3379846 * r3379846;
        double r3379865 = r3379863 + r3379864;
        double r3379866 = r3379860 / r3379865;
        double r3379867 = atan2(r3379845, r3379866);
        double r3379868 = r3379837 + r3379867;
        return r3379868;
}

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. Using strategy rm
  3. Applied log1p-expm1-u0.2

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

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

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

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

Reproduce

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