Average Error: 0.2 → 0.2
Time: 18.1s
Precision: 64
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - \left({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}{{\left(\cos delta\right)}^{2} + \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left(\sin \phi_1 \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) + \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)\right)\right)}}\]
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - \left({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}{{\left(\cos delta\right)}^{2} + \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left(\sin \phi_1 \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) + \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)\right)\right)}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r132763 = lambda1;
        double r132764 = theta;
        double r132765 = sin(r132764);
        double r132766 = delta;
        double r132767 = sin(r132766);
        double r132768 = r132765 * r132767;
        double r132769 = phi1;
        double r132770 = cos(r132769);
        double r132771 = r132768 * r132770;
        double r132772 = cos(r132766);
        double r132773 = sin(r132769);
        double r132774 = r132773 * r132772;
        double r132775 = r132770 * r132767;
        double r132776 = cos(r132764);
        double r132777 = r132775 * r132776;
        double r132778 = r132774 + r132777;
        double r132779 = asin(r132778);
        double r132780 = sin(r132779);
        double r132781 = r132773 * r132780;
        double r132782 = r132772 - r132781;
        double r132783 = atan2(r132771, r132782);
        double r132784 = r132763 + r132783;
        return r132784;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r132785 = lambda1;
        double r132786 = theta;
        double r132787 = sin(r132786);
        double r132788 = delta;
        double r132789 = sin(r132788);
        double r132790 = r132787 * r132789;
        double r132791 = phi1;
        double r132792 = cos(r132791);
        double r132793 = r132790 * r132792;
        double r132794 = cos(r132788);
        double r132795 = 3.0;
        double r132796 = pow(r132794, r132795);
        double r132797 = pow(r132789, r132795);
        double r132798 = pow(r132792, r132795);
        double r132799 = cos(r132786);
        double r132800 = pow(r132799, r132795);
        double r132801 = sin(r132791);
        double r132802 = pow(r132801, r132795);
        double r132803 = r132800 * r132802;
        double r132804 = r132798 * r132803;
        double r132805 = r132797 * r132804;
        double r132806 = 6.0;
        double r132807 = pow(r132801, r132806);
        double r132808 = r132807 * r132796;
        double r132809 = 5.0;
        double r132810 = pow(r132801, r132809);
        double r132811 = 2.0;
        double r132812 = pow(r132794, r132811);
        double r132813 = r132812 * r132799;
        double r132814 = r132810 * r132813;
        double r132815 = r132792 * r132814;
        double r132816 = r132789 * r132815;
        double r132817 = r132795 * r132816;
        double r132818 = pow(r132789, r132811);
        double r132819 = pow(r132792, r132811);
        double r132820 = 4.0;
        double r132821 = pow(r132801, r132820);
        double r132822 = pow(r132799, r132811);
        double r132823 = r132794 * r132822;
        double r132824 = r132821 * r132823;
        double r132825 = r132819 * r132824;
        double r132826 = r132818 * r132825;
        double r132827 = r132795 * r132826;
        double r132828 = r132817 + r132827;
        double r132829 = r132808 + r132828;
        double r132830 = r132805 + r132829;
        double r132831 = r132796 - r132830;
        double r132832 = r132794 * r132799;
        double r132833 = r132801 * r132832;
        double r132834 = r132792 * r132833;
        double r132835 = r132789 * r132834;
        double r132836 = pow(r132801, r132811);
        double r132837 = r132822 * r132836;
        double r132838 = r132819 * r132837;
        double r132839 = r132818 * r132838;
        double r132840 = r132836 * r132812;
        double r132841 = r132802 * r132832;
        double r132842 = r132792 * r132841;
        double r132843 = r132789 * r132842;
        double r132844 = r132811 * r132843;
        double r132845 = r132821 * r132812;
        double r132846 = r132844 + r132845;
        double r132847 = r132840 + r132846;
        double r132848 = r132839 + r132847;
        double r132849 = r132835 + r132848;
        double r132850 = r132812 + r132849;
        double r132851 = r132831 / r132850;
        double r132852 = atan2(r132793, r132851);
        double r132853 = r132785 + r132852;
        return r132853;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
  2. Using strategy rm
  3. Applied flip3--0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\color{blue}{\frac{{\left(\cos delta\right)}^{3} - {\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}^{3}}{\cos delta \cdot \cos delta + \left(\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right) + \cos delta \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)\right)}}}\]
  4. Simplified0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - {\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}^{3}}{\color{blue}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}}\]
  5. Taylor expanded around inf 0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\color{blue}{\frac{{\left(\cos delta\right)}^{3} - \left({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}{{\left(\cos delta\right)}^{2} + \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left(\sin \phi_1 \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) + \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)\right)\right)}}}\]
  6. Final simplification0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - \left({\left(\sin delta\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + \left(3 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right) + 3 \cdot \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left(\cos delta \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right)\right)\right)\right)}{{\left(\cos delta\right)}^{2} + \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left(\sin \phi_1 \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) + \left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left({\left(\sin \phi_1\right)}^{2} \cdot {\left(\cos delta\right)}^{2} + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)\right)\right)}}\]

Reproduce

herbie shell --seed 2020059 +o rules:numerics
(FPCore (lambda1 phi1 phi2 delta theta)
  :name "Destination given bearing on a great circle"
  :precision binary64
  (+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))