\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.0116525285447533:\\
\;\;\;\;\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 0.9949385524453179:\\
\;\;\;\;\left({x}^{5} + x\right) - x \cdot \left(x \cdot x\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 r1762559 = x;
double r1762560 = r1762559 * r1762559;
double r1762561 = 1.0;
double r1762562 = r1762560 + r1762561;
double r1762563 = r1762559 / r1762562;
return r1762563;
}
double f(double x) {
double r1762564 = x;
double r1762565 = -1.0116525285447533;
bool r1762566 = r1762564 <= r1762565;
double r1762567 = 1.0;
double r1762568 = r1762567 / r1762564;
double r1762569 = 5.0;
double r1762570 = pow(r1762564, r1762569);
double r1762571 = r1762567 / r1762570;
double r1762572 = r1762564 * r1762564;
double r1762573 = r1762568 / r1762572;
double r1762574 = r1762571 - r1762573;
double r1762575 = r1762568 + r1762574;
double r1762576 = 0.9949385524453179;
bool r1762577 = r1762564 <= r1762576;
double r1762578 = r1762570 + r1762564;
double r1762579 = r1762564 * r1762572;
double r1762580 = r1762578 - r1762579;
double r1762581 = r1762577 ? r1762580 : r1762575;
double r1762582 = r1762566 ? r1762575 : r1762581;
return r1762582;
}




Bits error versus x
Results
| Original | 14.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.3 |
if x < -1.0116525285447533 or 0.9949385524453179 < x Initial program 29.3
Simplified29.3
Taylor expanded around inf 0.2
Simplified0.2
if -1.0116525285447533 < x < 0.9949385524453179Initial program 0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied *-un-lft-identity0.0
Applied times-frac0.0
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019139 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))