Average Error: 13.2 → 0.2
Time: 57.5s
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(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \sqrt[3]{\left(\left(\left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \cos \phi_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(\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(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \sqrt[3]{\left(\left(\left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \cos \phi_2}\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4619140 = lambda1;
        double r4619141 = lambda2;
        double r4619142 = r4619140 - r4619141;
        double r4619143 = sin(r4619142);
        double r4619144 = phi2;
        double r4619145 = cos(r4619144);
        double r4619146 = r4619143 * r4619145;
        double r4619147 = phi1;
        double r4619148 = cos(r4619147);
        double r4619149 = sin(r4619144);
        double r4619150 = r4619148 * r4619149;
        double r4619151 = sin(r4619147);
        double r4619152 = r4619151 * r4619145;
        double r4619153 = cos(r4619142);
        double r4619154 = r4619152 * r4619153;
        double r4619155 = r4619150 - r4619154;
        double r4619156 = atan2(r4619146, r4619155);
        return r4619156;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4619157 = lambda2;
        double r4619158 = cos(r4619157);
        double r4619159 = lambda1;
        double r4619160 = sin(r4619159);
        double r4619161 = r4619158 * r4619160;
        double r4619162 = cos(r4619159);
        double r4619163 = sin(r4619157);
        double r4619164 = r4619162 * r4619163;
        double r4619165 = r4619161 - r4619164;
        double r4619166 = phi2;
        double r4619167 = cos(r4619166);
        double r4619168 = r4619165 * r4619167;
        double r4619169 = sin(r4619166);
        double r4619170 = phi1;
        double r4619171 = cos(r4619170);
        double r4619172 = r4619169 * r4619171;
        double r4619173 = r4619158 * r4619162;
        double r4619174 = sin(r4619170);
        double r4619175 = r4619167 * r4619174;
        double r4619176 = r4619173 * r4619175;
        double r4619177 = r4619163 * r4619174;
        double r4619178 = r4619160 * r4619177;
        double r4619179 = r4619167 * r4619178;
        double r4619180 = r4619179 * r4619179;
        double r4619181 = r4619180 * r4619178;
        double r4619182 = r4619181 * r4619167;
        double r4619183 = cbrt(r4619182);
        double r4619184 = r4619176 + r4619183;
        double r4619185 = r4619172 - r4619184;
        double r4619186 = atan2(r4619168, r4619185);
        return r4619186;
}

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

    \[\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-cbrt-cube0.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(\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 \color{blue}{\sqrt[3]{\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2}}\right)\right)}\]
  9. Applied add-cbrt-cube0.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(\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(\color{blue}{\sqrt[3]{\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}} \cdot \sqrt[3]{\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2}\right)\right)}\]
  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(\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 \color{blue}{\sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2\right)}}\right)}\]
  11. Applied add-cbrt-cube0.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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \color{blue}{\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2}}\right) \cdot \sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2\right)}\right)}\]
  12. Applied add-cbrt-cube0.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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\color{blue}{\sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1}} \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2\right)}\right)}\]
  13. 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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \color{blue}{\sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2\right)}} \cdot \sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2\right)}\right)}\]
  14. 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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \color{blue}{\sqrt[3]{\left(\left(\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2\right)\right) \cdot \left(\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_2\right) \cdot \cos \phi_2\right)\right)}}\right)}\]
  15. Simplified0.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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \sqrt[3]{\color{blue}{\left(\left(\left(\left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right) \cdot \cos \phi_2\right) \cdot \left(\left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right) \cdot \cos \phi_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \cos \phi_2}}\right)}\]
  16. 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(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \sqrt[3]{\left(\left(\left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \cos \phi_2}\right)}\]

Reproduce

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