Average Error: 0.1 → 0.2
Time: 17.0s
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}{\frac{\left({\left(\cos delta\right)}^{3} - \mathsf{fma}\left({\left(\sin delta\right)}^{3} \cdot {\left(\cos \phi_1\right)}^{3}, {\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}, {\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3}\right)\right) - 3 \cdot \mathsf{fma}\left(\cos \phi_1 \cdot \sin delta, {\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right), {\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\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}{\frac{\left({\left(\cos delta\right)}^{3} - \mathsf{fma}\left({\left(\sin delta\right)}^{3} \cdot {\left(\cos \phi_1\right)}^{3}, {\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}, {\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3}\right)\right) - 3 \cdot \mathsf{fma}\left(\cos \phi_1 \cdot \sin delta, {\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right), {\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r105576 = lambda1;
        double r105577 = theta;
        double r105578 = sin(r105577);
        double r105579 = delta;
        double r105580 = sin(r105579);
        double r105581 = r105578 * r105580;
        double r105582 = phi1;
        double r105583 = cos(r105582);
        double r105584 = r105581 * r105583;
        double r105585 = cos(r105579);
        double r105586 = sin(r105582);
        double r105587 = r105586 * r105585;
        double r105588 = r105583 * r105580;
        double r105589 = cos(r105577);
        double r105590 = r105588 * r105589;
        double r105591 = r105587 + r105590;
        double r105592 = asin(r105591);
        double r105593 = sin(r105592);
        double r105594 = r105586 * r105593;
        double r105595 = r105585 - r105594;
        double r105596 = atan2(r105584, r105595);
        double r105597 = r105576 + r105596;
        return r105597;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r105598 = lambda1;
        double r105599 = theta;
        double r105600 = sin(r105599);
        double r105601 = delta;
        double r105602 = sin(r105601);
        double r105603 = r105600 * r105602;
        double r105604 = phi1;
        double r105605 = cos(r105604);
        double r105606 = r105603 * r105605;
        double r105607 = cos(r105601);
        double r105608 = 3.0;
        double r105609 = pow(r105607, r105608);
        double r105610 = pow(r105602, r105608);
        double r105611 = pow(r105605, r105608);
        double r105612 = r105610 * r105611;
        double r105613 = cos(r105599);
        double r105614 = pow(r105613, r105608);
        double r105615 = sin(r105604);
        double r105616 = pow(r105615, r105608);
        double r105617 = r105614 * r105616;
        double r105618 = 6.0;
        double r105619 = pow(r105615, r105618);
        double r105620 = r105619 * r105609;
        double r105621 = fma(r105612, r105617, r105620);
        double r105622 = r105609 - r105621;
        double r105623 = r105605 * r105602;
        double r105624 = 5.0;
        double r105625 = pow(r105615, r105624);
        double r105626 = 2.0;
        double r105627 = pow(r105607, r105626);
        double r105628 = r105627 * r105613;
        double r105629 = r105625 * r105628;
        double r105630 = pow(r105602, r105626);
        double r105631 = pow(r105605, r105626);
        double r105632 = 4.0;
        double r105633 = pow(r105615, r105632);
        double r105634 = pow(r105613, r105626);
        double r105635 = r105607 * r105634;
        double r105636 = r105633 * r105635;
        double r105637 = r105631 * r105636;
        double r105638 = r105630 * r105637;
        double r105639 = fma(r105623, r105629, r105638);
        double r105640 = r105608 * r105639;
        double r105641 = r105622 - r105640;
        double r105642 = r105615 * r105607;
        double r105643 = r105623 * r105613;
        double r105644 = r105642 + r105643;
        double r105645 = asin(r105644);
        double r105646 = sin(r105645);
        double r105647 = fma(r105615, r105646, r105607);
        double r105648 = r105646 * r105647;
        double r105649 = r105615 * r105648;
        double r105650 = fma(r105607, r105607, r105649);
        double r105651 = r105641 / r105650;
        double r105652 = atan2(r105606, r105651);
        double r105653 = r105598 + r105652;
        return r105653;
}

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.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 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(\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}}{\cos delta \cdot \cos delta + \left(\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) \cdot \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) + \cos delta \cdot \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}{\frac{{\left(\cos delta\right)}^{3} - {\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)}^{3}}{\color{blue}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}}\]
  5. Using strategy rm
  6. Applied expm1-log1p-u0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left({\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)}^{3}\right)\right)}}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}\]
  7. Taylor expanded around inf 0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{\color{blue}{{\left(\cos delta\right)}^{3} - \left({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}\]
  8. Simplified0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{\color{blue}{\left({\left(\cos delta\right)}^{3} - \mathsf{fma}\left({\left(\sin delta\right)}^{3} \cdot {\left(\cos \phi_1\right)}^{3}, {\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}, {\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3}\right)\right) - 3 \cdot \mathsf{fma}\left(\cos \phi_1 \cdot \sin delta, {\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right), {\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)}}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}\]
  9. Final simplification0.2

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

Reproduce

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