Average Error: 13.4 → 0.2
Time: 43.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(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_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(\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(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r3707976 = lambda1;
        double r3707977 = lambda2;
        double r3707978 = r3707976 - r3707977;
        double r3707979 = sin(r3707978);
        double r3707980 = phi2;
        double r3707981 = cos(r3707980);
        double r3707982 = r3707979 * r3707981;
        double r3707983 = phi1;
        double r3707984 = cos(r3707983);
        double r3707985 = sin(r3707980);
        double r3707986 = r3707984 * r3707985;
        double r3707987 = sin(r3707983);
        double r3707988 = r3707987 * r3707981;
        double r3707989 = cos(r3707978);
        double r3707990 = r3707988 * r3707989;
        double r3707991 = r3707986 - r3707990;
        double r3707992 = atan2(r3707982, r3707991);
        return r3707992;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r3707993 = lambda2;
        double r3707994 = cos(r3707993);
        double r3707995 = lambda1;
        double r3707996 = sin(r3707995);
        double r3707997 = r3707994 * r3707996;
        double r3707998 = cos(r3707995);
        double r3707999 = sin(r3707993);
        double r3708000 = r3707998 * r3707999;
        double r3708001 = r3707997 - r3708000;
        double r3708002 = phi2;
        double r3708003 = cos(r3708002);
        double r3708004 = r3708001 * r3708003;
        double r3708005 = sin(r3708002);
        double r3708006 = phi1;
        double r3708007 = cos(r3708006);
        double r3708008 = r3708005 * r3708007;
        double r3708009 = r3707999 * r3707996;
        double r3708010 = sin(r3708006);
        double r3708011 = r3708010 * r3708003;
        double r3708012 = r3708009 * r3708011;
        double r3708013 = exp(r3708012);
        double r3708014 = log(r3708013);
        double r3708015 = r3707994 * r3707998;
        double r3708016 = r3708015 * r3708011;
        double r3708017 = r3708014 + r3708016;
        double r3708018 = r3708008 - r3708017;
        double r3708019 = atan2(r3708004, r3708018);
        return r3708019;
}

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. Applied distribute-lft-in0.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 \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\]
  7. Using strategy rm
  8. 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}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \color{blue}{\log \left(e^{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}\right)}\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(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]

Reproduce

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