\left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}\begin{array}{l}
\mathbf{if}\;F \le -173479323.4816099107265472412109375:\\
\;\;\;\;\mathsf{fma}\left(1, \frac{x}{\sin B \cdot {F}^{2}}, -\mathsf{fma}\left(1, \frac{x \cdot \cos B}{\sin B}, \frac{1}{\sin B}\right)\right)\\
\mathbf{elif}\;F \le 118194348.12650699913501739501953125:\\
\;\;\;\;\mathsf{fma}\left(\frac{F}{\sin B}, {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}, -\frac{x \cdot 1}{\sin B} \cdot \cos B\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-1, \frac{x \cdot \cos B}{\sin B} + \frac{x}{\sin B \cdot {F}^{2}}, \frac{1}{\sin B}\right)\\
\end{array}double f(double F, double B, double x) {
double r37781 = x;
double r37782 = 1.0;
double r37783 = B;
double r37784 = tan(r37783);
double r37785 = r37782 / r37784;
double r37786 = r37781 * r37785;
double r37787 = -r37786;
double r37788 = F;
double r37789 = sin(r37783);
double r37790 = r37788 / r37789;
double r37791 = r37788 * r37788;
double r37792 = 2.0;
double r37793 = r37791 + r37792;
double r37794 = r37792 * r37781;
double r37795 = r37793 + r37794;
double r37796 = r37782 / r37792;
double r37797 = -r37796;
double r37798 = pow(r37795, r37797);
double r37799 = r37790 * r37798;
double r37800 = r37787 + r37799;
return r37800;
}
double f(double F, double B, double x) {
double r37801 = F;
double r37802 = -173479323.4816099;
bool r37803 = r37801 <= r37802;
double r37804 = 1.0;
double r37805 = x;
double r37806 = B;
double r37807 = sin(r37806);
double r37808 = 2.0;
double r37809 = pow(r37801, r37808);
double r37810 = r37807 * r37809;
double r37811 = r37805 / r37810;
double r37812 = cos(r37806);
double r37813 = r37805 * r37812;
double r37814 = r37813 / r37807;
double r37815 = 1.0;
double r37816 = r37815 / r37807;
double r37817 = fma(r37804, r37814, r37816);
double r37818 = -r37817;
double r37819 = fma(r37804, r37811, r37818);
double r37820 = 118194348.126507;
bool r37821 = r37801 <= r37820;
double r37822 = r37801 / r37807;
double r37823 = r37801 * r37801;
double r37824 = 2.0;
double r37825 = r37823 + r37824;
double r37826 = r37824 * r37805;
double r37827 = r37825 + r37826;
double r37828 = r37804 / r37824;
double r37829 = -r37828;
double r37830 = pow(r37827, r37829);
double r37831 = r37805 * r37804;
double r37832 = r37831 / r37807;
double r37833 = r37832 * r37812;
double r37834 = -r37833;
double r37835 = fma(r37822, r37830, r37834);
double r37836 = -r37804;
double r37837 = r37814 + r37811;
double r37838 = fma(r37836, r37837, r37816);
double r37839 = r37821 ? r37835 : r37838;
double r37840 = r37803 ? r37819 : r37839;
return r37840;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -173479323.4816099Initial program 24.3
Simplified24.3
Taylor expanded around -inf 0.2
Simplified0.2
if -173479323.4816099 < F < 118194348.126507Initial program 0.4
Simplified0.4
rmApplied associate-*r/0.3
rmApplied tan-quot0.3
Applied associate-/r/0.3
if 118194348.126507 < F Initial program 26.5
Simplified26.5
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019354 +o rules:numerics
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
:precision binary64
(+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))