Average Error: 13.2 → 0.2
Time: 40.4s
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(\left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\cos \lambda_2} - \sin \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_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(\left(\left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\cos \lambda_2} - \sin \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4360022 = lambda1;
        double r4360023 = lambda2;
        double r4360024 = r4360022 - r4360023;
        double r4360025 = sin(r4360024);
        double r4360026 = phi2;
        double r4360027 = cos(r4360026);
        double r4360028 = r4360025 * r4360027;
        double r4360029 = phi1;
        double r4360030 = cos(r4360029);
        double r4360031 = sin(r4360026);
        double r4360032 = r4360030 * r4360031;
        double r4360033 = sin(r4360029);
        double r4360034 = r4360033 * r4360027;
        double r4360035 = cos(r4360024);
        double r4360036 = r4360034 * r4360035;
        double r4360037 = r4360032 - r4360036;
        double r4360038 = atan2(r4360028, r4360037);
        return r4360038;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4360039 = lambda2;
        double r4360040 = cos(r4360039);
        double r4360041 = cbrt(r4360040);
        double r4360042 = r4360041 * r4360041;
        double r4360043 = lambda1;
        double r4360044 = sin(r4360043);
        double r4360045 = r4360042 * r4360044;
        double r4360046 = r4360045 * r4360041;
        double r4360047 = sin(r4360039);
        double r4360048 = cos(r4360043);
        double r4360049 = r4360047 * r4360048;
        double r4360050 = r4360046 - r4360049;
        double r4360051 = phi2;
        double r4360052 = cos(r4360051);
        double r4360053 = r4360050 * r4360052;
        double r4360054 = phi1;
        double r4360055 = cos(r4360054);
        double r4360056 = sin(r4360051);
        double r4360057 = r4360055 * r4360056;
        double r4360058 = r4360044 * r4360047;
        double r4360059 = sin(r4360054);
        double r4360060 = r4360052 * r4360059;
        double r4360061 = r4360058 * r4360060;
        double r4360062 = r4360048 * r4360040;
        double r4360063 = r4360060 * r4360062;
        double r4360064 = r4360061 + r4360063;
        double r4360065 = r4360057 - r4360064;
        double r4360066 = atan2(r4360053, r4360065);
        return r4360066;
}

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. Applied distribute-rgt-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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}}\]
  7. Using strategy rm
  8. 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(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]
  9. 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(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]
  10. Final simplification0.2

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

Reproduce

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