\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)}\tan^{-1}_* \frac{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{-\frac{\frac{\mathsf{fma}\left({\left(\sin \phi_1\right)}^{5} \cdot {\left(\sin delta\right)}^{3}, \left(\cos delta \cdot {\left(\cos \phi_1\right)}^{3}\right) \cdot {\left(\cos theta\right)}^{3}, \mathsf{fma}\left({\left(\sin \phi_1\right)}^{5} \cdot 3, \left(\left({\left(\cos \phi_1\right)}^{3} \cdot {\left(\cos theta\right)}^{3}\right) \cdot {\left(\sin delta\right)}^{3}\right) \cdot \cos delta, \mathsf{fma}\left({\left(\sin \phi_1\right)}^{7} \cdot \left(\cos \phi_1 \cdot \left(\left(\sin delta \cdot \cos theta\right) \cdot {\left(\cos delta\right)}^{3}\right)\right), 3, \mathsf{fma}\left({\left(\sin \phi_1\right)}^{7}, \left({\left(\cos delta\right)}^{3} \cdot \left(\cos \phi_1 \cdot \cos theta\right)\right) \cdot \sin delta, \mathsf{fma}\left(6, \left({\left(\cos delta\right)}^{2} \cdot \left(\left({\left(\cos theta\right)}^{2} \cdot {\left(\cos \phi_1\right)}^{2}\right) \cdot {\left(\sin delta\right)}^{2}\right)\right) \cdot {\left(\sin \phi_1\right)}^{6}, \mathsf{fma}\left({\left(\sin delta\right)}^{4} \cdot {\left(\sin \phi_1\right)}^{4}, {\left(\cos \phi_1\right)}^{4} \cdot {\left(\cos theta\right)}^{4}, {\left(\sin \phi_1\right)}^{8} \cdot {\left(\cos delta\right)}^{4}\right)\right)\right)\right)\right)\right) - {\left(\cos delta\right)}^{4}}{\mathsf{fma}\left({\left(\cos theta\right)}^{2} \cdot \left({\left(\sin delta\right)}^{2} \cdot {\left(\cos \phi_1\right)}^{2}\right), {\left(\sin \phi_1\right)}^{2}, {\left(\cos delta\right)}^{2} \cdot \left({\left(\sin \phi_1\right)}^{4} + 1\right) + \left(2 \cdot {\left(\sin \phi_1\right)}^{3}\right) \cdot \left(\left(\cos theta \cdot \cos delta\right) \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)}}{\mathsf{fma}\left(\cos delta, {\left(\sin \phi_1\right)}^{2}, \mathsf{fma}\left(\sin delta \cdot \sin \phi_1, \cos \phi_1 \cdot \cos theta, \cos delta\right)\right)}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r89647 = lambda1;
double r89648 = theta;
double r89649 = sin(r89648);
double r89650 = delta;
double r89651 = sin(r89650);
double r89652 = r89649 * r89651;
double r89653 = phi1;
double r89654 = cos(r89653);
double r89655 = r89652 * r89654;
double r89656 = cos(r89650);
double r89657 = sin(r89653);
double r89658 = r89657 * r89656;
double r89659 = r89654 * r89651;
double r89660 = cos(r89648);
double r89661 = r89659 * r89660;
double r89662 = r89658 + r89661;
double r89663 = asin(r89662);
double r89664 = sin(r89663);
double r89665 = r89657 * r89664;
double r89666 = r89656 - r89665;
double r89667 = atan2(r89655, r89666);
double r89668 = r89647 + r89667;
return r89668;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r89669 = phi1;
double r89670 = cos(r89669);
double r89671 = delta;
double r89672 = sin(r89671);
double r89673 = theta;
double r89674 = sin(r89673);
double r89675 = r89672 * r89674;
double r89676 = r89670 * r89675;
double r89677 = sin(r89669);
double r89678 = 5.0;
double r89679 = pow(r89677, r89678);
double r89680 = 3.0;
double r89681 = pow(r89672, r89680);
double r89682 = r89679 * r89681;
double r89683 = cos(r89671);
double r89684 = pow(r89670, r89680);
double r89685 = r89683 * r89684;
double r89686 = cos(r89673);
double r89687 = pow(r89686, r89680);
double r89688 = r89685 * r89687;
double r89689 = r89679 * r89680;
double r89690 = r89684 * r89687;
double r89691 = r89690 * r89681;
double r89692 = r89691 * r89683;
double r89693 = 7.0;
double r89694 = pow(r89677, r89693);
double r89695 = r89672 * r89686;
double r89696 = pow(r89683, r89680);
double r89697 = r89695 * r89696;
double r89698 = r89670 * r89697;
double r89699 = r89694 * r89698;
double r89700 = r89670 * r89686;
double r89701 = r89696 * r89700;
double r89702 = r89701 * r89672;
double r89703 = 6.0;
double r89704 = 2.0;
double r89705 = pow(r89683, r89704);
double r89706 = pow(r89686, r89704);
double r89707 = pow(r89670, r89704);
double r89708 = r89706 * r89707;
double r89709 = pow(r89672, r89704);
double r89710 = r89708 * r89709;
double r89711 = r89705 * r89710;
double r89712 = pow(r89677, r89703);
double r89713 = r89711 * r89712;
double r89714 = 4.0;
double r89715 = pow(r89672, r89714);
double r89716 = pow(r89677, r89714);
double r89717 = r89715 * r89716;
double r89718 = pow(r89670, r89714);
double r89719 = pow(r89686, r89714);
double r89720 = r89718 * r89719;
double r89721 = 8.0;
double r89722 = pow(r89677, r89721);
double r89723 = pow(r89683, r89714);
double r89724 = r89722 * r89723;
double r89725 = fma(r89717, r89720, r89724);
double r89726 = fma(r89703, r89713, r89725);
double r89727 = fma(r89694, r89702, r89726);
double r89728 = fma(r89699, r89680, r89727);
double r89729 = fma(r89689, r89692, r89728);
double r89730 = fma(r89682, r89688, r89729);
double r89731 = r89730 - r89723;
double r89732 = r89709 * r89707;
double r89733 = r89706 * r89732;
double r89734 = pow(r89677, r89704);
double r89735 = 1.0;
double r89736 = r89716 + r89735;
double r89737 = r89705 * r89736;
double r89738 = pow(r89677, r89680);
double r89739 = r89704 * r89738;
double r89740 = r89686 * r89683;
double r89741 = r89670 * r89672;
double r89742 = r89740 * r89741;
double r89743 = r89739 * r89742;
double r89744 = r89737 + r89743;
double r89745 = fma(r89733, r89734, r89744);
double r89746 = r89731 / r89745;
double r89747 = r89672 * r89677;
double r89748 = fma(r89747, r89700, r89683);
double r89749 = fma(r89683, r89734, r89748);
double r89750 = r89746 / r89749;
double r89751 = -r89750;
double r89752 = atan2(r89676, r89751);
double r89753 = lambda1;
double r89754 = r89752 + r89753;
return r89754;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied flip--0.2
Simplified0.2
Simplified0.2
rmApplied fma-udef0.2
Simplified0.2
rmApplied flip-+0.2
Applied associate-/l/0.2
Simplified0.2
Taylor expanded around -inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019195 +o rules:numerics
(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))))))))))