Average Error: 0.1 → 0.2
Time: 17.6s
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}{\cos delta - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\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}{\cos delta - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r124101 = lambda1;
        double r124102 = theta;
        double r124103 = sin(r124102);
        double r124104 = delta;
        double r124105 = sin(r124104);
        double r124106 = r124103 * r124105;
        double r124107 = phi1;
        double r124108 = cos(r124107);
        double r124109 = r124106 * r124108;
        double r124110 = cos(r124104);
        double r124111 = sin(r124107);
        double r124112 = r124111 * r124110;
        double r124113 = r124108 * r124105;
        double r124114 = cos(r124102);
        double r124115 = r124113 * r124114;
        double r124116 = r124112 + r124115;
        double r124117 = asin(r124116);
        double r124118 = sin(r124117);
        double r124119 = r124111 * r124118;
        double r124120 = r124110 - r124119;
        double r124121 = atan2(r124109, r124120);
        double r124122 = r124101 + r124121;
        return r124122;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r124123 = lambda1;
        double r124124 = theta;
        double r124125 = sin(r124124);
        double r124126 = delta;
        double r124127 = sin(r124126);
        double r124128 = r124125 * r124127;
        double r124129 = phi1;
        double r124130 = cos(r124129);
        double r124131 = r124128 * r124130;
        double r124132 = cos(r124126);
        double r124133 = sin(r124129);
        double r124134 = exp(r124133);
        double r124135 = r124133 * r124132;
        double r124136 = r124130 * r124127;
        double r124137 = cos(r124124);
        double r124138 = r124136 * r124137;
        double r124139 = r124135 + r124138;
        double r124140 = acos(r124139);
        double r124141 = -r124140;
        double r124142 = cos(r124141);
        double r124143 = pow(r124134, r124142);
        double r124144 = log(r124143);
        double r124145 = r124132 - r124144;
        double r124146 = atan2(r124131, r124145);
        double r124147 = r124123 + r124146;
        return r124147;
}

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.1

    \[\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 asin-acos0.2

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

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

Reproduce

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