Average Error: 13.5 → 0.2
Time: 41.9s
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}{\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \left(\sin \phi_2 \cdot \log \left(e^{\sqrt[3]{\cos \phi_1}}\right)\right) - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \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{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \left(\sin \phi_2 \cdot \log \left(e^{\sqrt[3]{\cos \phi_1}}\right)\right) - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r3747945 = lambda1;
        double r3747946 = lambda2;
        double r3747947 = r3747945 - r3747946;
        double r3747948 = sin(r3747947);
        double r3747949 = phi2;
        double r3747950 = cos(r3747949);
        double r3747951 = r3747948 * r3747950;
        double r3747952 = phi1;
        double r3747953 = cos(r3747952);
        double r3747954 = sin(r3747949);
        double r3747955 = r3747953 * r3747954;
        double r3747956 = sin(r3747952);
        double r3747957 = r3747956 * r3747950;
        double r3747958 = cos(r3747947);
        double r3747959 = r3747957 * r3747958;
        double r3747960 = r3747955 - r3747959;
        double r3747961 = atan2(r3747951, r3747960);
        return r3747961;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r3747962 = lambda2;
        double r3747963 = cos(r3747962);
        double r3747964 = lambda1;
        double r3747965 = sin(r3747964);
        double r3747966 = r3747963 * r3747965;
        double r3747967 = cos(r3747964);
        double r3747968 = sin(r3747962);
        double r3747969 = r3747967 * r3747968;
        double r3747970 = r3747966 - r3747969;
        double r3747971 = phi2;
        double r3747972 = cos(r3747971);
        double r3747973 = r3747970 * r3747972;
        double r3747974 = phi1;
        double r3747975 = cos(r3747974);
        double r3747976 = cbrt(r3747975);
        double r3747977 = r3747976 * r3747976;
        double r3747978 = sin(r3747971);
        double r3747979 = exp(r3747976);
        double r3747980 = log(r3747979);
        double r3747981 = r3747978 * r3747980;
        double r3747982 = r3747977 * r3747981;
        double r3747983 = r3747968 * r3747965;
        double r3747984 = r3747963 * r3747967;
        double r3747985 = r3747983 + r3747984;
        double r3747986 = sin(r3747974);
        double r3747987 = r3747972 * r3747986;
        double r3747988 = r3747985 * r3747987;
        double r3747989 = r3747982 - r3747988;
        double r3747990 = atan2(r3747973, r3747989);
        return r3747990;
}

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-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 \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\left(\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \sqrt[3]{\cos \phi_1}\right)} \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-*l*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}{\color{blue}{\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \left(\sqrt[3]{\cos \phi_1} \cdot \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 \lambda_2\right)}\]
  9. Using strategy rm
  10. Applied add-log-exp0.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}{\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \left(\color{blue}{\log \left(e^{\sqrt[3]{\cos \phi_1}}\right)} \cdot \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 \lambda_2\right)}\]
  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}{\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}\right) \cdot \left(\sin \phi_2 \cdot \log \left(e^{\sqrt[3]{\cos \phi_1}}\right)\right) - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\]

Reproduce

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