Average Error: 13.1 → 0.2
Time: 31.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{\left(\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right)\right) \cdot \sqrt[3]{\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(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\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(\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right)\right) \cdot \sqrt[3]{\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(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r104892 = lambda1;
        double r104893 = lambda2;
        double r104894 = r104892 - r104893;
        double r104895 = sin(r104894);
        double r104896 = phi2;
        double r104897 = cos(r104896);
        double r104898 = r104895 * r104897;
        double r104899 = phi1;
        double r104900 = cos(r104899);
        double r104901 = sin(r104896);
        double r104902 = r104900 * r104901;
        double r104903 = sin(r104899);
        double r104904 = r104903 * r104897;
        double r104905 = cos(r104894);
        double r104906 = r104904 * r104905;
        double r104907 = r104902 - r104906;
        double r104908 = atan2(r104898, r104907);
        return r104908;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r104909 = lambda1;
        double r104910 = sin(r104909);
        double r104911 = lambda2;
        double r104912 = cos(r104911);
        double r104913 = cbrt(r104912);
        double r104914 = r104913 * r104913;
        double r104915 = r104910 * r104914;
        double r104916 = r104915 * r104913;
        double r104917 = cos(r104909);
        double r104918 = sin(r104911);
        double r104919 = r104917 * r104918;
        double r104920 = r104916 - r104919;
        double r104921 = phi2;
        double r104922 = cos(r104921);
        double r104923 = r104920 * r104922;
        double r104924 = phi1;
        double r104925 = cos(r104924);
        double r104926 = sin(r104921);
        double r104927 = r104925 * r104926;
        double r104928 = sin(r104924);
        double r104929 = r104928 * r104922;
        double r104930 = r104917 * r104912;
        double r104931 = r104910 * r104918;
        double r104932 = r104930 + r104931;
        double r104933 = r104929 * r104932;
        double r104934 = r104927 - r104933;
        double r104935 = atan2(r104923, r104934);
        return r104935;
}

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

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

    \[\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 \color{blue}{\left(\left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right) \cdot \sqrt[3]{\cos \lambda_2}\right)} - \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(\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(\color{blue}{\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right)\right) \cdot \sqrt[3]{\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(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\]
  9. Final simplification0.2

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

Reproduce

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