\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}{\cos delta - \sin \left(\sqrt[3]{{\left(\sin^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \cos delta, \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}^{3}}\right) \cdot \sin \phi_1}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85683 = lambda1;
double r85684 = theta;
double r85685 = sin(r85684);
double r85686 = delta;
double r85687 = sin(r85686);
double r85688 = r85685 * r85687;
double r85689 = phi1;
double r85690 = cos(r85689);
double r85691 = r85688 * r85690;
double r85692 = cos(r85686);
double r85693 = sin(r85689);
double r85694 = r85693 * r85692;
double r85695 = r85690 * r85687;
double r85696 = cos(r85684);
double r85697 = r85695 * r85696;
double r85698 = r85694 + r85697;
double r85699 = asin(r85698);
double r85700 = sin(r85699);
double r85701 = r85693 * r85700;
double r85702 = r85692 - r85701;
double r85703 = atan2(r85691, r85702);
double r85704 = r85683 + r85703;
return r85704;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85705 = lambda1;
double r85706 = theta;
double r85707 = sin(r85706);
double r85708 = delta;
double r85709 = sin(r85708);
double r85710 = r85707 * r85709;
double r85711 = phi1;
double r85712 = cos(r85711);
double r85713 = r85710 * r85712;
double r85714 = cos(r85708);
double r85715 = sin(r85711);
double r85716 = r85712 * r85709;
double r85717 = cos(r85706);
double r85718 = r85716 * r85717;
double r85719 = fma(r85715, r85714, r85718);
double r85720 = asin(r85719);
double r85721 = 3.0;
double r85722 = pow(r85720, r85721);
double r85723 = cbrt(r85722);
double r85724 = sin(r85723);
double r85725 = r85724 * r85715;
double r85726 = r85714 - r85725;
double r85727 = atan2(r85713, r85726);
double r85728 = r85705 + r85727;
return r85728;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019325 +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))))))))))