\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.349880233114214 \cdot 10^{+154}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\
\mathbf{elif}\;x \le 461.8594710281936:\\
\;\;\;\;\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\
\end{array}double f(double x) {
double r5751514 = x;
double r5751515 = r5751514 * r5751514;
double r5751516 = 1.0;
double r5751517 = r5751515 + r5751516;
double r5751518 = r5751514 / r5751517;
return r5751518;
}
double f(double x) {
double r5751519 = x;
double r5751520 = -1.349880233114214e+154;
bool r5751521 = r5751519 <= r5751520;
double r5751522 = 1.0;
double r5751523 = 5.0;
double r5751524 = pow(r5751519, r5751523);
double r5751525 = r5751522 / r5751524;
double r5751526 = r5751522 / r5751519;
double r5751527 = r5751525 + r5751526;
double r5751528 = r5751519 * r5751519;
double r5751529 = r5751528 * r5751519;
double r5751530 = r5751522 / r5751529;
double r5751531 = r5751527 - r5751530;
double r5751532 = 461.8594710281936;
bool r5751533 = r5751519 <= r5751532;
double r5751534 = fma(r5751519, r5751519, r5751522);
double r5751535 = sqrt(r5751534);
double r5751536 = r5751519 / r5751535;
double r5751537 = r5751536 / r5751535;
double r5751538 = r5751533 ? r5751537 : r5751531;
double r5751539 = r5751521 ? r5751531 : r5751538;
return r5751539;
}




Bits error versus x
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -1.349880233114214e+154 or 461.8594710281936 < x Initial program 39.8
Simplified39.8
Taylor expanded around inf 0.0
Simplified0.0
if -1.349880233114214e+154 < x < 461.8594710281936Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied associate-/r*0.0
Final simplification0.0
herbie shell --seed 2019104 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))