Average Error: 13.5 → 0.2
Time: 36.3s
Precision: 64
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
\[\tan^{-1}_* \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}\]
\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\tan^{-1}_* \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r129564 = lambda1;
        double r129565 = lambda2;
        double r129566 = r129564 - r129565;
        double r129567 = sin(r129566);
        double r129568 = phi2;
        double r129569 = cos(r129568);
        double r129570 = r129567 * r129569;
        double r129571 = phi1;
        double r129572 = cos(r129571);
        double r129573 = sin(r129568);
        double r129574 = r129572 * r129573;
        double r129575 = sin(r129571);
        double r129576 = r129575 * r129569;
        double r129577 = cos(r129566);
        double r129578 = r129576 * r129577;
        double r129579 = r129574 - r129578;
        double r129580 = atan2(r129570, r129579);
        return r129580;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r129581 = phi2;
        double r129582 = cos(r129581);
        double r129583 = lambda1;
        double r129584 = sin(r129583);
        double r129585 = lambda2;
        double r129586 = cos(r129585);
        double r129587 = -r129585;
        double r129588 = sin(r129587);
        double r129589 = cos(r129583);
        double r129590 = r129588 * r129589;
        double r129591 = fma(r129584, r129586, r129590);
        double r129592 = r129582 * r129591;
        double r129593 = expm1(r129592);
        double r129594 = log1p(r129593);
        double r129595 = phi1;
        double r129596 = cos(r129595);
        double r129597 = sin(r129581);
        double r129598 = r129596 * r129597;
        double r129599 = sin(r129595);
        double r129600 = r129599 * r129582;
        double r129601 = r129586 * r129589;
        double r129602 = cbrt(r129588);
        double r129603 = r129602 * r129602;
        double r129604 = r129603 * r129584;
        double r129605 = r129604 * r129602;
        double r129606 = r129601 - r129605;
        double r129607 = r129600 * r129606;
        double r129608 = r129598 - r129607;
        double r129609 = atan2(r129594, r129608);
        return r129609;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Derivation

  1. Initial program 13.5

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  2. Using strategy rm
  3. Applied sub-neg13.5

    \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  4. Applied sin-sum6.8

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \left(-\lambda_2\right) + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  5. Simplified6.8

    \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1 \cdot \cos \lambda_2} + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  6. Using strategy rm
  7. Applied sub-neg6.8

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}}\]
  8. Applied cos-sum0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}}\]
  9. Simplified0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_2 \cdot \cos \lambda_1} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  10. Using strategy rm
  11. Applied log1p-expm1-u0.2

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2\right)\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  12. Simplified0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{log1p}\left(\color{blue}{\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)}\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  13. Using strategy rm
  14. Applied add-cube-cbrt0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \color{blue}{\left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}\right)}\]
  15. Applied associate-*r*0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \color{blue}{\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}}\right)}\]
  16. Simplified0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \sin \left(-\lambda_2\right) \cdot \cos \lambda_1\right)\right)\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \color{blue}{\left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sin \lambda_1\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}\]
  17. Final simplification0.2

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

Reproduce

herbie shell --seed 2019235 +o rules:numerics
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Bearing on a great circle"
  :precision binary64
  (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))