\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 -16640897351.8930034637451171875:\\
\;\;\;\;\left(\frac{\frac{1}{\sin B}}{F \cdot F} - \frac{1}{\sin B}\right) - x \cdot \frac{1}{\tan B}\\
\mathbf{elif}\;F \le 8028.221689814057754119858145713806152344:\\
\;\;\;\;\frac{1}{\frac{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}}{F}} - \frac{x \cdot 1}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(1, {\left(\frac{1}{{F}^{2}}\right)}^{1} \cdot \sin B, \sin B\right)} - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r2378696 = x;
double r2378697 = 1.0;
double r2378698 = B;
double r2378699 = tan(r2378698);
double r2378700 = r2378697 / r2378699;
double r2378701 = r2378696 * r2378700;
double r2378702 = -r2378701;
double r2378703 = F;
double r2378704 = sin(r2378698);
double r2378705 = r2378703 / r2378704;
double r2378706 = r2378703 * r2378703;
double r2378707 = 2.0;
double r2378708 = r2378706 + r2378707;
double r2378709 = r2378707 * r2378696;
double r2378710 = r2378708 + r2378709;
double r2378711 = r2378697 / r2378707;
double r2378712 = -r2378711;
double r2378713 = pow(r2378710, r2378712);
double r2378714 = r2378705 * r2378713;
double r2378715 = r2378702 + r2378714;
return r2378715;
}
double f(double F, double B, double x) {
double r2378716 = F;
double r2378717 = -16640897351.893003;
bool r2378718 = r2378716 <= r2378717;
double r2378719 = 1.0;
double r2378720 = B;
double r2378721 = sin(r2378720);
double r2378722 = r2378719 / r2378721;
double r2378723 = r2378716 * r2378716;
double r2378724 = r2378722 / r2378723;
double r2378725 = 1.0;
double r2378726 = r2378725 / r2378721;
double r2378727 = r2378724 - r2378726;
double r2378728 = x;
double r2378729 = tan(r2378720);
double r2378730 = r2378719 / r2378729;
double r2378731 = r2378728 * r2378730;
double r2378732 = r2378727 - r2378731;
double r2378733 = 8028.221689814058;
bool r2378734 = r2378716 <= r2378733;
double r2378735 = 2.0;
double r2378736 = fma(r2378728, r2378735, r2378735);
double r2378737 = fma(r2378716, r2378716, r2378736);
double r2378738 = r2378719 / r2378735;
double r2378739 = -r2378738;
double r2378740 = pow(r2378737, r2378739);
double r2378741 = r2378721 / r2378740;
double r2378742 = r2378741 / r2378716;
double r2378743 = r2378725 / r2378742;
double r2378744 = r2378728 * r2378719;
double r2378745 = r2378744 / r2378729;
double r2378746 = r2378743 - r2378745;
double r2378747 = pow(r2378716, r2378735);
double r2378748 = r2378725 / r2378747;
double r2378749 = pow(r2378748, r2378719);
double r2378750 = r2378749 * r2378721;
double r2378751 = fma(r2378719, r2378750, r2378721);
double r2378752 = r2378725 / r2378751;
double r2378753 = r2378752 - r2378745;
double r2378754 = r2378734 ? r2378746 : r2378753;
double r2378755 = r2378718 ? r2378732 : r2378754;
return r2378755;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -16640897351.893003Initial program 26.1
Simplified20.4
Taylor expanded around -inf 0.2
Simplified0.2
if -16640897351.893003 < F < 8028.221689814058Initial program 0.4
Simplified0.4
rmApplied associate-*l/0.3
rmApplied clear-num0.3
if 8028.221689814058 < F Initial program 25.9
Simplified20.0
rmApplied associate-*l/20.0
rmApplied clear-num20.0
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019169 +o rules:numerics
(FPCore (F B x)
:name "VandenBroeck and Keller, Equation (23)"
(+ (- (* x (/ 1.0 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2.0) (* 2.0 x)) (- (/ 1.0 2.0))))))