Average Error: 13.2 → 0.2
Time: 45.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{\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 - \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1} \cdot \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\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 - \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1} \cdot \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1838972 = lambda1;
        double r1838973 = lambda2;
        double r1838974 = r1838972 - r1838973;
        double r1838975 = sin(r1838974);
        double r1838976 = phi2;
        double r1838977 = cos(r1838976);
        double r1838978 = r1838975 * r1838977;
        double r1838979 = phi1;
        double r1838980 = cos(r1838979);
        double r1838981 = sin(r1838976);
        double r1838982 = r1838980 * r1838981;
        double r1838983 = sin(r1838979);
        double r1838984 = r1838983 * r1838977;
        double r1838985 = cos(r1838974);
        double r1838986 = r1838984 * r1838985;
        double r1838987 = r1838982 - r1838986;
        double r1838988 = atan2(r1838978, r1838987);
        return r1838988;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1838989 = lambda2;
        double r1838990 = cos(r1838989);
        double r1838991 = lambda1;
        double r1838992 = sin(r1838991);
        double r1838993 = r1838990 * r1838992;
        double r1838994 = cos(r1838991);
        double r1838995 = sin(r1838989);
        double r1838996 = r1838994 * r1838995;
        double r1838997 = r1838993 - r1838996;
        double r1838998 = phi2;
        double r1838999 = cos(r1838998);
        double r1839000 = r1838997 * r1838999;
        double r1839001 = sin(r1838998);
        double r1839002 = phi1;
        double r1839003 = cos(r1839002);
        double r1839004 = r1839001 * r1839003;
        double r1839005 = r1838995 * r1838992;
        double r1839006 = r1838990 * r1838994;
        double r1839007 = r1839005 + r1839006;
        double r1839008 = cbrt(r1839007);
        double r1839009 = sin(r1839002);
        double r1839010 = r1839009 * r1838999;
        double r1839011 = r1839007 * r1839007;
        double r1839012 = cbrt(r1839011);
        double r1839013 = r1839010 * r1839012;
        double r1839014 = r1839008 * r1839013;
        double r1839015 = r1839004 - r1839014;
        double r1839016 = atan2(r1839000, r1839015);
        return r1839016;
}

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.2

    \[\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.8

    \[\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.3

    \[\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(\left(\sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}\right)}}\]
  8. Applied associate-*r*0.3

    \[\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 \cos \phi_2\right) \cdot \left(\sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}\right)\right) \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}}}\]
  9. Using strategy rm
  10. Applied cbrt-unprod0.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(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\sqrt[3]{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}}\right) \cdot \sqrt[3]{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}}\]
  11. 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 - \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1} \cdot \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}\right)}\]

Reproduce

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