Average Error: 13.3 → 0.2
Time: 27.2s
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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r115550 = lambda1;
        double r115551 = lambda2;
        double r115552 = r115550 - r115551;
        double r115553 = sin(r115552);
        double r115554 = phi2;
        double r115555 = cos(r115554);
        double r115556 = r115553 * r115555;
        double r115557 = phi1;
        double r115558 = cos(r115557);
        double r115559 = sin(r115554);
        double r115560 = r115558 * r115559;
        double r115561 = sin(r115557);
        double r115562 = r115561 * r115555;
        double r115563 = cos(r115552);
        double r115564 = r115562 * r115563;
        double r115565 = r115560 - r115564;
        double r115566 = atan2(r115556, r115565);
        return r115566;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r115567 = lambda1;
        double r115568 = sin(r115567);
        double r115569 = lambda2;
        double r115570 = cos(r115569);
        double r115571 = r115568 * r115570;
        double r115572 = cos(r115567);
        double r115573 = -r115569;
        double r115574 = sin(r115573);
        double r115575 = r115572 * r115574;
        double r115576 = r115571 + r115575;
        double r115577 = phi2;
        double r115578 = cos(r115577);
        double r115579 = r115576 * r115578;
        double r115580 = phi1;
        double r115581 = cos(r115580);
        double r115582 = sin(r115577);
        double r115583 = r115581 * r115582;
        double r115584 = sin(r115580);
        double r115585 = r115584 * r115578;
        double r115586 = r115572 * r115570;
        double r115587 = 3.0;
        double r115588 = pow(r115586, r115587);
        double r115589 = sin(r115569);
        double r115590 = r115568 * r115589;
        double r115591 = exp(r115590);
        double r115592 = log(r115591);
        double r115593 = pow(r115592, r115587);
        double r115594 = r115588 + r115593;
        double r115595 = r115585 * r115594;
        double r115596 = r115586 * r115586;
        double r115597 = r115592 * r115592;
        double r115598 = r115586 * r115592;
        double r115599 = r115597 - r115598;
        double r115600 = r115596 + r115599;
        double r115601 = r115595 / r115600;
        double r115602 = r115583 - r115601;
        double r115603 = atan2(r115579, r115602);
        return r115603;
}

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

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

    \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\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. Applied sin-sum6.8

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \left(-\lambda_2\right) + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}\]
  5. Simplified6.8

    \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1 \cdot \cos \lambda_2} + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}\]
  6. Using strategy rm
  7. Applied cos-diff0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}}\]
  8. Using strategy rm
  9. Applied add-log-exp0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)}\right)}\]
  10. Using strategy rm
  11. Applied flip3-+0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}^{3}}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}}}\]
  12. Applied associate-*r/0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)}}}\]
  13. Final simplification0.2

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

Reproduce

herbie shell --seed 2019308 
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Bearing on a great circle"
  :precision binary64
  (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))