\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.8453524061497666 \cdot 10^{+21}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 13951219.631737411:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\end{array}double f(double x) {
double r1885504 = x;
double r1885505 = r1885504 * r1885504;
double r1885506 = 1.0;
double r1885507 = r1885505 + r1885506;
double r1885508 = r1885504 / r1885507;
return r1885508;
}
double f(double x) {
double r1885509 = x;
double r1885510 = -1.8453524061497666e+21;
bool r1885511 = r1885509 <= r1885510;
double r1885512 = 1.0;
double r1885513 = r1885512 / r1885509;
double r1885514 = r1885509 * r1885509;
double r1885515 = r1885513 / r1885514;
double r1885516 = r1885513 - r1885515;
double r1885517 = 5.0;
double r1885518 = pow(r1885509, r1885517);
double r1885519 = r1885512 / r1885518;
double r1885520 = r1885516 + r1885519;
double r1885521 = 13951219.631737411;
bool r1885522 = r1885509 <= r1885521;
double r1885523 = fma(r1885509, r1885509, r1885512);
double r1885524 = r1885509 / r1885523;
double r1885525 = r1885522 ? r1885524 : r1885520;
double r1885526 = r1885511 ? r1885520 : r1885525;
return r1885526;
}




Bits error versus x
| Original | 15.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -1.8453524061497666e+21 or 13951219.631737411 < x Initial program 31.5
Simplified31.5
Taylor expanded around inf 0.0
Simplified0.0
if -1.8453524061497666e+21 < x < 13951219.631737411Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019152 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))