Average Error: 13.4 → 0.2
Time: 45.7s
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(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \left(\sin \phi_1 \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right)\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(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \left(\sin \phi_1 \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right)\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4689848 = lambda1;
        double r4689849 = lambda2;
        double r4689850 = r4689848 - r4689849;
        double r4689851 = sin(r4689850);
        double r4689852 = phi2;
        double r4689853 = cos(r4689852);
        double r4689854 = r4689851 * r4689853;
        double r4689855 = phi1;
        double r4689856 = cos(r4689855);
        double r4689857 = sin(r4689852);
        double r4689858 = r4689856 * r4689857;
        double r4689859 = sin(r4689855);
        double r4689860 = r4689859 * r4689853;
        double r4689861 = cos(r4689850);
        double r4689862 = r4689860 * r4689861;
        double r4689863 = r4689858 - r4689862;
        double r4689864 = atan2(r4689854, r4689863);
        return r4689864;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4689865 = lambda2;
        double r4689866 = cos(r4689865);
        double r4689867 = lambda1;
        double r4689868 = sin(r4689867);
        double r4689869 = r4689866 * r4689868;
        double r4689870 = cos(r4689867);
        double r4689871 = sin(r4689865);
        double r4689872 = r4689870 * r4689871;
        double r4689873 = r4689869 - r4689872;
        double r4689874 = phi2;
        double r4689875 = cos(r4689874);
        double r4689876 = r4689873 * r4689875;
        double r4689877 = sin(r4689874);
        double r4689878 = phi1;
        double r4689879 = cos(r4689878);
        double r4689880 = r4689877 * r4689879;
        double r4689881 = r4689871 * r4689868;
        double r4689882 = r4689866 * r4689870;
        double r4689883 = r4689881 + r4689882;
        double r4689884 = cbrt(r4689875);
        double r4689885 = sin(r4689878);
        double r4689886 = r4689884 * r4689884;
        double r4689887 = r4689885 * r4689886;
        double r4689888 = r4689884 * r4689887;
        double r4689889 = r4689883 * r4689888;
        double r4689890 = r4689880 - r4689889;
        double r4689891 = atan2(r4689876, r4689890);
        return r4689891;
}

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.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. Using strategy rm
  3. Applied sin-diff6.9

    \[\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 cos-diff0.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 \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}}\]
  6. Using strategy rm
  7. Applied add-cube-cbrt0.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 \color{blue}{\left(\left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \sqrt[3]{\cos \phi_2}\right)}\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\]
  8. Applied associate-*r*0.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 - \color{blue}{\left(\left(\sin \phi_1 \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right)\right) \cdot \sqrt[3]{\cos \phi_2}\right)} \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\]
  9. Final simplification0.2

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

Reproduce

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