Average Error: 0.2 → 0.2
Time: 48.4s
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(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta}{\cos delta - \log \left(e^{\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) \cdot \sin \phi_1}\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(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta}{\cos delta - \log \left(e^{\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) \cdot \sin \phi_1}\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3457596 = lambda1;
        double r3457597 = theta;
        double r3457598 = sin(r3457597);
        double r3457599 = delta;
        double r3457600 = sin(r3457599);
        double r3457601 = r3457598 * r3457600;
        double r3457602 = phi1;
        double r3457603 = cos(r3457602);
        double r3457604 = r3457601 * r3457603;
        double r3457605 = cos(r3457599);
        double r3457606 = sin(r3457602);
        double r3457607 = r3457606 * r3457605;
        double r3457608 = r3457603 * r3457600;
        double r3457609 = cos(r3457597);
        double r3457610 = r3457608 * r3457609;
        double r3457611 = r3457607 + r3457610;
        double r3457612 = asin(r3457611);
        double r3457613 = sin(r3457612);
        double r3457614 = r3457606 * r3457613;
        double r3457615 = r3457605 - r3457614;
        double r3457616 = atan2(r3457604, r3457615);
        double r3457617 = r3457596 + r3457616;
        return r3457617;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3457618 = lambda1;
        double r3457619 = phi1;
        double r3457620 = cos(r3457619);
        double r3457621 = delta;
        double r3457622 = sin(r3457621);
        double r3457623 = r3457620 * r3457622;
        double r3457624 = theta;
        double r3457625 = sin(r3457624);
        double r3457626 = r3457623 * r3457625;
        double r3457627 = cos(r3457621);
        double r3457628 = cos(r3457624);
        double r3457629 = sin(r3457619);
        double r3457630 = r3457629 * r3457627;
        double r3457631 = fma(r3457628, r3457623, r3457630);
        double r3457632 = asin(r3457631);
        double r3457633 = sin(r3457632);
        double r3457634 = r3457633 * r3457629;
        double r3457635 = exp(r3457634);
        double r3457636 = log(r3457635);
        double r3457637 = r3457627 - r3457636;
        double r3457638 = atan2(r3457626, r3457637);
        double r3457639 = r3457618 + r3457638;
        return r3457639;
}

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. Simplified0.2

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

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

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

Reproduce

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