Average Error: 13.5 → 0.4
Time: 21.0s
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{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\left(\cos \phi_1 \cdot \left(\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}\right)\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}} \cdot \sqrt[3]{\sqrt[3]{\sin \phi_2}}\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \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{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\left(\cos \phi_1 \cdot \left(\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}\right)\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}} \cdot \sqrt[3]{\sqrt[3]{\sin \phi_2}}\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r150897 = lambda1;
        double r150898 = lambda2;
        double r150899 = r150897 - r150898;
        double r150900 = sin(r150899);
        double r150901 = phi2;
        double r150902 = cos(r150901);
        double r150903 = r150900 * r150902;
        double r150904 = phi1;
        double r150905 = cos(r150904);
        double r150906 = sin(r150901);
        double r150907 = r150905 * r150906;
        double r150908 = sin(r150904);
        double r150909 = r150908 * r150902;
        double r150910 = cos(r150899);
        double r150911 = r150909 * r150910;
        double r150912 = r150907 - r150911;
        double r150913 = atan2(r150903, r150912);
        return r150913;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r150914 = lambda1;
        double r150915 = sin(r150914);
        double r150916 = lambda2;
        double r150917 = cos(r150916);
        double r150918 = r150915 * r150917;
        double r150919 = cos(r150914);
        double r150920 = sin(r150916);
        double r150921 = r150919 * r150920;
        double r150922 = r150918 - r150921;
        double r150923 = phi2;
        double r150924 = cos(r150923);
        double r150925 = r150922 * r150924;
        double r150926 = phi1;
        double r150927 = cos(r150926);
        double r150928 = sin(r150923);
        double r150929 = cbrt(r150928);
        double r150930 = r150929 * r150929;
        double r150931 = r150927 * r150930;
        double r150932 = cbrt(r150930);
        double r150933 = cbrt(r150929);
        double r150934 = r150932 * r150933;
        double r150935 = r150931 * r150934;
        double r150936 = sin(r150926);
        double r150937 = r150936 * r150924;
        double r150938 = r150919 * r150917;
        double r150939 = -r150916;
        double r150940 = sin(r150939);
        double r150941 = r150915 * r150940;
        double r150942 = r150938 - r150941;
        double r150943 = r150937 * r150942;
        double r150944 = r150935 - r150943;
        double r150945 = atan2(r150925, r150944);
        return r150945;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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 sin-diff7.0

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)}\]
  4. Using strategy rm
  5. Applied sub-neg7.0

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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 \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}}\]
  6. Applied cos-sum0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\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)}}\]
  7. Simplified0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\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_1 \cdot \cos \lambda_2} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  8. Using strategy rm
  9. Applied add-cube-cbrt0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \color{blue}{\left(\left(\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}\right) \cdot \sqrt[3]{\sin \phi_2}\right)} - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  10. Applied associate-*r*0.4

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\left(\cos \phi_1 \cdot \left(\sqrt[3]{\sin \phi_2} \cdot \sqrt[3]{\sin \phi_2}\right)\right) \cdot \sqrt[3]{\sin \phi_2}} - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  11. Using strategy rm
  12. Applied add-cube-cbrt0.4

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

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

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

Reproduce

herbie shell --seed 2019322 
(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))))))