Average Error: 13.4 → 0.4
Time: 37.6s
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{\cos \phi_2 \cdot \left(\left(-\sin \lambda_2\right) \cdot \cos \lambda_1 + \cos \lambda_2 \cdot \sin \lambda_1\right)}{\mathsf{fma}\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\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{\cos \phi_2 \cdot \left(\left(-\sin \lambda_2\right) \cdot \cos \lambda_1 + \cos \lambda_2 \cdot \sin \lambda_1\right)}{\mathsf{fma}\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r127815 = lambda1;
        double r127816 = lambda2;
        double r127817 = r127815 - r127816;
        double r127818 = sin(r127817);
        double r127819 = phi2;
        double r127820 = cos(r127819);
        double r127821 = r127818 * r127820;
        double r127822 = phi1;
        double r127823 = cos(r127822);
        double r127824 = sin(r127819);
        double r127825 = r127823 * r127824;
        double r127826 = sin(r127822);
        double r127827 = r127826 * r127820;
        double r127828 = cos(r127817);
        double r127829 = r127827 * r127828;
        double r127830 = r127825 - r127829;
        double r127831 = atan2(r127821, r127830);
        return r127831;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r127832 = phi2;
        double r127833 = cos(r127832);
        double r127834 = lambda2;
        double r127835 = sin(r127834);
        double r127836 = -r127835;
        double r127837 = lambda1;
        double r127838 = cos(r127837);
        double r127839 = r127836 * r127838;
        double r127840 = cos(r127834);
        double r127841 = sin(r127837);
        double r127842 = r127840 * r127841;
        double r127843 = r127839 + r127842;
        double r127844 = r127833 * r127843;
        double r127845 = r127840 * r127838;
        double r127846 = fma(r127841, r127835, r127845);
        double r127847 = r127846 * r127846;
        double r127848 = r127847 * r127846;
        double r127849 = phi1;
        double r127850 = sin(r127849);
        double r127851 = r127850 * r127850;
        double r127852 = r127850 * r127851;
        double r127853 = r127848 * r127852;
        double r127854 = cbrt(r127853);
        double r127855 = -r127833;
        double r127856 = sin(r127832);
        double r127857 = cos(r127849);
        double r127858 = r127856 * r127857;
        double r127859 = fma(r127854, r127855, r127858);
        double r127860 = atan2(r127844, r127859);
        return r127860;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Derivation

  1. Initial program 13.4

    \[\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. Simplified13.4

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}}\]
  3. Using strategy rm
  4. Applied sub-neg13.4

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

    \[\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}{\mathsf{fma}\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  6. Simplified6.6

    \[\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}{\mathsf{fma}\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  7. Simplified6.6

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\left(-\cos \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  8. Using strategy rm
  9. Applied cos-diff0.2

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

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sin \phi_1 \cdot \left(\color{blue}{\cos \lambda_2 \cdot \cos \lambda_1} + \sin \lambda_1 \cdot \sin \lambda_2\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  11. Using strategy rm
  12. Applied add-cbrt-cube0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sin \phi_1 \cdot \color{blue}{\sqrt[3]{\left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right)}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  13. Applied add-cbrt-cube0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\color{blue}{\sqrt[3]{\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}} \cdot \sqrt[3]{\left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  14. Applied cbrt-unprod0.4

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

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sqrt[3]{\color{blue}{{\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \sin \phi_1\right)}^{3}}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  16. Using strategy rm
  17. Applied add-cbrt-cube0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sqrt[3]{{\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \color{blue}{\sqrt[3]{\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}}\right)}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  18. Applied add-cbrt-cube0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sqrt[3]{{\left(\color{blue}{\sqrt[3]{\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right)}} \cdot \sqrt[3]{\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}\right)}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  19. Applied cbrt-unprod0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(-\cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\sqrt[3]{{\color{blue}{\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right)}\right)}}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  20. Applied rem-cube-cbrt0.4

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

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

Reproduce

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