Average Error: 0.2 → 0.2
Time: 1.0m
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(\cos theta \cdot \sin delta\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(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1\right)\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r2959796 = lambda1;
        double r2959797 = theta;
        double r2959798 = sin(r2959797);
        double r2959799 = delta;
        double r2959800 = sin(r2959799);
        double r2959801 = r2959798 * r2959800;
        double r2959802 = phi1;
        double r2959803 = cos(r2959802);
        double r2959804 = r2959801 * r2959803;
        double r2959805 = cos(r2959799);
        double r2959806 = sin(r2959802);
        double r2959807 = r2959806 * r2959805;
        double r2959808 = r2959803 * r2959800;
        double r2959809 = cos(r2959797);
        double r2959810 = r2959808 * r2959809;
        double r2959811 = r2959807 + r2959810;
        double r2959812 = asin(r2959811);
        double r2959813 = sin(r2959812);
        double r2959814 = r2959806 * r2959813;
        double r2959815 = r2959805 - r2959814;
        double r2959816 = atan2(r2959804, r2959815);
        double r2959817 = r2959796 + r2959816;
        return r2959817;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r2959818 = lambda1;
        double r2959819 = phi1;
        double r2959820 = cos(r2959819);
        double r2959821 = delta;
        double r2959822 = sin(r2959821);
        double r2959823 = theta;
        double r2959824 = sin(r2959823);
        double r2959825 = r2959822 * r2959824;
        double r2959826 = r2959820 * r2959825;
        double r2959827 = cos(r2959821);
        double r2959828 = sin(r2959819);
        double r2959829 = r2959827 * r2959828;
        double r2959830 = r2959828 * r2959829;
        double r2959831 = cos(r2959823);
        double r2959832 = r2959831 * r2959822;
        double r2959833 = r2959832 * r2959820;
        double r2959834 = r2959828 * r2959833;
        double r2959835 = r2959830 + r2959834;
        double r2959836 = r2959827 - r2959835;
        double r2959837 = atan2(r2959826, r2959836);
        double r2959838 = r2959818 + r2959837;
        return r2959838;
}

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. Taylor expanded around -inf 0.2

    \[\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-lft-in0.2

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

    \[\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(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1\right)\right)}\]

Reproduce

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