\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -7.683354923764348 \cdot 10^{+38}:\\
\;\;\;\;\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 429.9995223081375:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right)\\
\end{array}double f(double x) {
double r2244773 = x;
double r2244774 = r2244773 * r2244773;
double r2244775 = 1.0;
double r2244776 = r2244774 + r2244775;
double r2244777 = r2244773 / r2244776;
return r2244777;
}
double f(double x) {
double r2244778 = x;
double r2244779 = -7.683354923764348e+38;
bool r2244780 = r2244778 <= r2244779;
double r2244781 = 1.0;
double r2244782 = r2244781 / r2244778;
double r2244783 = 5.0;
double r2244784 = pow(r2244778, r2244783);
double r2244785 = r2244781 / r2244784;
double r2244786 = r2244778 * r2244778;
double r2244787 = r2244782 / r2244786;
double r2244788 = r2244785 - r2244787;
double r2244789 = r2244782 + r2244788;
double r2244790 = 429.9995223081375;
bool r2244791 = r2244778 <= r2244790;
double r2244792 = fma(r2244778, r2244778, r2244781);
double r2244793 = r2244778 / r2244792;
double r2244794 = r2244791 ? r2244793 : r2244789;
double r2244795 = r2244780 ? r2244789 : r2244794;
return r2244795;
}




Bits error versus x
| Original | 14.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -7.683354923764348e+38 or 429.9995223081375 < x Initial program 31.7
Simplified31.7
rmApplied add-sqr-sqrt31.7
Applied *-un-lft-identity31.7
Applied times-frac31.6
Taylor expanded around inf 0.0
Simplified0.0
if -7.683354923764348e+38 < x < 429.9995223081375Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))