\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -8789989068572990460 \lor \neg \left(x \le 14857.3789203431752\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{{x}^{5}} - \frac{1}{{x}^{3}}\right) + \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r54747 = x;
double r54748 = r54747 * r54747;
double r54749 = 1.0;
double r54750 = r54748 + r54749;
double r54751 = r54747 / r54750;
return r54751;
}
double f(double x) {
double r54752 = x;
double r54753 = -8.78998906857299e+18;
bool r54754 = r54752 <= r54753;
double r54755 = 14857.378920343175;
bool r54756 = r54752 <= r54755;
double r54757 = !r54756;
bool r54758 = r54754 || r54757;
double r54759 = 1.0;
double r54760 = 1.0;
double r54761 = 5.0;
double r54762 = pow(r54752, r54761);
double r54763 = r54760 / r54762;
double r54764 = 3.0;
double r54765 = pow(r54752, r54764);
double r54766 = r54760 / r54765;
double r54767 = r54763 - r54766;
double r54768 = r54759 * r54767;
double r54769 = r54760 / r54752;
double r54770 = r54768 + r54769;
double r54771 = r54752 * r54752;
double r54772 = r54771 + r54759;
double r54773 = r54752 / r54772;
double r54774 = r54758 ? r54770 : r54773;
return r54774;
}




Bits error versus x
Results
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -8.78998906857299e+18 or 14857.378920343175 < x Initial program 31.4
Taylor expanded around inf 0.0
Simplified0.0
if -8.78998906857299e+18 < x < 14857.378920343175Initial program 0.0
Final simplification0.0
herbie shell --seed 2020036
(FPCore (x)
:name "x / (x^2 + 1)"
:precision binary64
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))