Average Error: 13.4 → 0.2
Time: 15.3s
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 \lambda_2\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) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - {\left({\left(\sin \lambda_1\right)}^{2} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{2}\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_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(\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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - {\left({\left(\sin \lambda_1\right)}^{2} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{2}\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r115763 = lambda1;
        double r115764 = lambda2;
        double r115765 = r115763 - r115764;
        double r115766 = sin(r115765);
        double r115767 = phi2;
        double r115768 = cos(r115767);
        double r115769 = r115766 * r115768;
        double r115770 = phi1;
        double r115771 = cos(r115770);
        double r115772 = sin(r115767);
        double r115773 = r115771 * r115772;
        double r115774 = sin(r115770);
        double r115775 = r115774 * r115768;
        double r115776 = cos(r115765);
        double r115777 = r115775 * r115776;
        double r115778 = r115773 - r115777;
        double r115779 = atan2(r115769, r115778);
        return r115779;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r115780 = lambda1;
        double r115781 = sin(r115780);
        double r115782 = lambda2;
        double r115783 = cos(r115782);
        double r115784 = r115781 * r115783;
        double r115785 = cos(r115780);
        double r115786 = sin(r115782);
        double r115787 = r115785 * r115786;
        double r115788 = r115784 - r115787;
        double r115789 = phi2;
        double r115790 = cos(r115789);
        double r115791 = r115788 * r115790;
        double r115792 = phi1;
        double r115793 = cos(r115792);
        double r115794 = sin(r115789);
        double r115795 = r115793 * r115794;
        double r115796 = sin(r115792);
        double r115797 = r115796 * r115790;
        double r115798 = r115785 * r115783;
        double r115799 = r115798 * r115798;
        double r115800 = 2.0;
        double r115801 = pow(r115781, r115800);
        double r115802 = -r115782;
        double r115803 = sin(r115802);
        double r115804 = pow(r115803, r115800);
        double r115805 = r115801 * r115804;
        double r115806 = 1.0;
        double r115807 = pow(r115805, r115806);
        double r115808 = r115799 - r115807;
        double r115809 = r115797 * r115808;
        double r115810 = r115781 * r115803;
        double r115811 = r115798 + r115810;
        double r115812 = r115809 / r115811;
        double r115813 = r115795 - r115812;
        double r115814 = atan2(r115791, r115813);
        return r115814;
}

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-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 sub-neg7.0

    \[\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 \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}}\]
  6. Applied cos-sum0.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 \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}}\]
  7. 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(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_1 \cdot \cos \lambda_2} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  8. Using strategy rm
  9. Applied flip--0.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}{\frac{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}}\]
  10. Applied associate-*r/0.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}{\frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}}\]
  11. Using strategy rm
  12. Applied pow10.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \color{blue}{{\left(\sin \left(-\lambda_2\right)\right)}^{1}}\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  13. Applied pow10.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\color{blue}{{\left(\sin \lambda_1\right)}^{1}} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{1}\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  14. Applied pow-prod-down0.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \color{blue}{{\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{1}}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  15. Applied pow10.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \color{blue}{{\left(\sin \left(-\lambda_2\right)\right)}^{1}}\right) \cdot {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  16. Applied pow10.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\color{blue}{{\left(\sin \lambda_1\right)}^{1}} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{1}\right) \cdot {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  17. Applied pow-prod-down0.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \color{blue}{{\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{1}} \cdot {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  18. Applied pow-prod-down0.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \color{blue}{{\left(\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}^{1}}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  19. 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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - {\color{blue}{\left({\left(\sin \lambda_1\right)}^{2} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{2}\right)}}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]
  20. Final simplification0.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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - {\left({\left(\sin \lambda_1\right)}^{2} \cdot {\left(\sin \left(-\lambda_2\right)\right)}^{2}\right)}^{1}\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\]

Reproduce

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