Average Error: 13.4 → 0.4
Time: 36.8s
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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \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)\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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \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)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r62077 = lambda1;
        double r62078 = lambda2;
        double r62079 = r62077 - r62078;
        double r62080 = sin(r62079);
        double r62081 = phi2;
        double r62082 = cos(r62081);
        double r62083 = r62080 * r62082;
        double r62084 = phi1;
        double r62085 = cos(r62084);
        double r62086 = sin(r62081);
        double r62087 = r62085 * r62086;
        double r62088 = sin(r62084);
        double r62089 = r62088 * r62082;
        double r62090 = cos(r62079);
        double r62091 = r62089 * r62090;
        double r62092 = r62087 - r62091;
        double r62093 = atan2(r62083, r62092);
        return r62093;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r62094 = phi2;
        double r62095 = cos(r62094);
        double r62096 = lambda2;
        double r62097 = sin(r62096);
        double r62098 = -r62097;
        double r62099 = lambda1;
        double r62100 = cos(r62099);
        double r62101 = r62098 * r62100;
        double r62102 = cos(r62096);
        double r62103 = sin(r62099);
        double r62104 = r62102 * r62103;
        double r62105 = r62101 + r62104;
        double r62106 = r62095 * r62105;
        double r62107 = phi1;
        double r62108 = sin(r62107);
        double r62109 = r62108 * r62108;
        double r62110 = r62109 * r62108;
        double r62111 = r62102 * r62100;
        double r62112 = fma(r62103, r62097, r62111);
        double r62113 = r62112 * r62112;
        double r62114 = r62112 * r62113;
        double r62115 = r62110 * r62114;
        double r62116 = cbrt(r62115);
        double r62117 = -r62095;
        double r62118 = sin(r62094);
        double r62119 = cos(r62107);
        double r62120 = r62118 * r62119;
        double r62121 = fma(r62116, r62117, r62120);
        double r62122 = atan2(r62106, r62121);
        return r62122;
}

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 sub-neg6.6

    \[\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 \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  10. Applied cos-sum0.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 \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  11. 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 \left(-\lambda_2\right)\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  12. 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(\cos \lambda_2 \cdot \cos \lambda_1 - \color{blue}{\sin \lambda_1 \cdot \left(-\sin \lambda_2\right)}\right), -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  13. Using strategy rm
  14. 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 \left(-\sin \lambda_2\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  15. 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 \left(-\sin \lambda_2\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  16. 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 \left(-\sin \lambda_2\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \left(-\sin \lambda_2\right)\right)\right)}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  17. 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(\sin \phi_1 \cdot \mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right)\right)}^{3}}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  18. Using strategy rm
  19. 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(\sin \phi_1 \cdot \color{blue}{\sqrt[3]{\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)}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  20. 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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}} \cdot \sqrt[3]{\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)}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  21. 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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \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)}\right)}}^{3}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  22. 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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \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)}}, -\cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\]
  23. 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(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\mathsf{fma}\left(\sin \lambda_1, \sin \lambda_2, \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \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)\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))))))