Average Error: 13.6 → 0.3
Time: 37.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(\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(\sqrt[3]{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \sqrt[3]{\sin \phi_1 \cdot \cos \phi_2}\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_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}{\sin \phi_2 \cdot \cos \phi_1 - \left(\sqrt[3]{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \sqrt[3]{\sin \phi_1 \cdot \cos \phi_2}\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4791435 = lambda1;
        double r4791436 = lambda2;
        double r4791437 = r4791435 - r4791436;
        double r4791438 = sin(r4791437);
        double r4791439 = phi2;
        double r4791440 = cos(r4791439);
        double r4791441 = r4791438 * r4791440;
        double r4791442 = phi1;
        double r4791443 = cos(r4791442);
        double r4791444 = sin(r4791439);
        double r4791445 = r4791443 * r4791444;
        double r4791446 = sin(r4791442);
        double r4791447 = r4791446 * r4791440;
        double r4791448 = cos(r4791437);
        double r4791449 = r4791447 * r4791448;
        double r4791450 = r4791445 - r4791449;
        double r4791451 = atan2(r4791441, r4791450);
        return r4791451;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4791452 = lambda2;
        double r4791453 = cos(r4791452);
        double r4791454 = lambda1;
        double r4791455 = sin(r4791454);
        double r4791456 = r4791453 * r4791455;
        double r4791457 = cos(r4791454);
        double r4791458 = sin(r4791452);
        double r4791459 = r4791457 * r4791458;
        double r4791460 = r4791456 - r4791459;
        double r4791461 = phi2;
        double r4791462 = cos(r4791461);
        double r4791463 = r4791460 * r4791462;
        double r4791464 = sin(r4791461);
        double r4791465 = phi1;
        double r4791466 = cos(r4791465);
        double r4791467 = r4791464 * r4791466;
        double r4791468 = sin(r4791465);
        double r4791469 = r4791468 * r4791462;
        double r4791470 = r4791469 * r4791469;
        double r4791471 = cbrt(r4791470);
        double r4791472 = cbrt(r4791469);
        double r4791473 = r4791471 * r4791472;
        double r4791474 = r4791458 * r4791455;
        double r4791475 = r4791453 * r4791457;
        double r4791476 = r4791474 + r4791475;
        double r4791477 = r4791473 * r4791476;
        double r4791478 = r4791467 - r4791477;
        double r4791479 = atan2(r4791463, r4791478);
        return r4791479;
}

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

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

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

    \[\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(\sqrt[3]{\sin \phi_1 \cdot \cos \phi_2} \cdot \sqrt[3]{\sin \phi_1 \cdot \cos \phi_2}\right) \cdot \sqrt[3]{\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. Using strategy rm
  9. Applied cbrt-unprod0.3

    \[\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(\color{blue}{\sqrt[3]{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}} \cdot \sqrt[3]{\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)}\]
  10. Final simplification0.3

    \[\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(\sqrt[3]{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \sqrt[3]{\sin \phi_1 \cdot \cos \phi_2}\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right)}\]

Reproduce

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