Average Error: 0.2 → 0.2
Time: 14.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}{\log \left(e^{\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)}\]
\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}{\log \left(e^{\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)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r94002 = lambda1;
        double r94003 = theta;
        double r94004 = sin(r94003);
        double r94005 = delta;
        double r94006 = sin(r94005);
        double r94007 = r94004 * r94006;
        double r94008 = phi1;
        double r94009 = cos(r94008);
        double r94010 = r94007 * r94009;
        double r94011 = cos(r94005);
        double r94012 = sin(r94008);
        double r94013 = r94012 * r94011;
        double r94014 = r94009 * r94006;
        double r94015 = cos(r94003);
        double r94016 = r94014 * r94015;
        double r94017 = r94013 + r94016;
        double r94018 = asin(r94017);
        double r94019 = sin(r94018);
        double r94020 = r94012 * r94019;
        double r94021 = r94011 - r94020;
        double r94022 = atan2(r94010, r94021);
        double r94023 = r94002 + r94022;
        return r94023;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r94024 = lambda1;
        double r94025 = theta;
        double r94026 = sin(r94025);
        double r94027 = delta;
        double r94028 = sin(r94027);
        double r94029 = r94026 * r94028;
        double r94030 = phi1;
        double r94031 = cos(r94030);
        double r94032 = r94029 * r94031;
        double r94033 = cos(r94027);
        double r94034 = sin(r94030);
        double r94035 = r94034 * r94033;
        double r94036 = r94031 * r94028;
        double r94037 = cos(r94025);
        double r94038 = r94036 * r94037;
        double r94039 = r94035 + r94038;
        double r94040 = asin(r94039);
        double r94041 = sin(r94040);
        double r94042 = r94034 * r94041;
        double r94043 = r94033 - r94042;
        double r94044 = exp(r94043);
        double r94045 = log(r94044);
        double r94046 = atan2(r94032, r94045);
        double r94047 = r94024 + r94046;
        return r94047;
}

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-log-exp0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \color{blue}{\log \left(e^{\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. Applied add-log-exp0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\color{blue}{\log \left(e^{\cos delta}\right)} - \log \left(e^{\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)}\]
  5. Applied diff-log0.2

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

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\log \left(e^{\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)}\]

Reproduce

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