Average Error: 0.1 → 0.1
Time: 49.2s
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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\cos delta - \left(\sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right) + \sin \phi_1 \cdot \left(\left(\sin delta \cdot \cos theta\right) \cdot \cos \phi_1\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\cos delta - \left(\sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right) + \sin \phi_1 \cdot \left(\left(\sin delta \cdot \cos theta\right) \cdot \cos \phi_1\right)\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r4486757 = lambda1;
        double r4486758 = theta;
        double r4486759 = sin(r4486758);
        double r4486760 = delta;
        double r4486761 = sin(r4486760);
        double r4486762 = r4486759 * r4486761;
        double r4486763 = phi1;
        double r4486764 = cos(r4486763);
        double r4486765 = r4486762 * r4486764;
        double r4486766 = cos(r4486760);
        double r4486767 = sin(r4486763);
        double r4486768 = r4486767 * r4486766;
        double r4486769 = r4486764 * r4486761;
        double r4486770 = cos(r4486758);
        double r4486771 = r4486769 * r4486770;
        double r4486772 = r4486768 + r4486771;
        double r4486773 = asin(r4486772);
        double r4486774 = sin(r4486773);
        double r4486775 = r4486767 * r4486774;
        double r4486776 = r4486766 - r4486775;
        double r4486777 = atan2(r4486765, r4486776);
        double r4486778 = r4486757 + r4486777;
        return r4486778;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r4486779 = lambda1;
        double r4486780 = phi1;
        double r4486781 = cos(r4486780);
        double r4486782 = delta;
        double r4486783 = sin(r4486782);
        double r4486784 = theta;
        double r4486785 = sin(r4486784);
        double r4486786 = r4486783 * r4486785;
        double r4486787 = r4486781 * r4486786;
        double r4486788 = cos(r4486782);
        double r4486789 = sin(r4486780);
        double r4486790 = r4486788 * r4486789;
        double r4486791 = r4486789 * r4486790;
        double r4486792 = cos(r4486784);
        double r4486793 = r4486783 * r4486792;
        double r4486794 = r4486793 * r4486781;
        double r4486795 = r4486789 * r4486794;
        double r4486796 = r4486791 + r4486795;
        double r4486797 = r4486788 - r4486796;
        double r4486798 = atan2(r4486787, r4486797);
        double r4486799 = r4486779 + r4486798;
        return r4486799;
}

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

    \[\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. Taylor expanded around -inf 0.1

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \color{blue}{\sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\sin delta \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}}\]
  3. Using strategy rm
  4. Applied distribute-rgt-in0.1

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

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

Reproduce

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