\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -853997951174.7607421875 \lor \neg \left(x \le 454.5428262739261526803602464497089385986\right):\\
\;\;\;\;\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{1}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r55420 = x;
double r55421 = r55420 * r55420;
double r55422 = 1.0;
double r55423 = r55421 + r55422;
double r55424 = r55420 / r55423;
return r55424;
}
double f(double x) {
double r55425 = x;
double r55426 = -853997951174.7607;
bool r55427 = r55425 <= r55426;
double r55428 = 454.54282627392615;
bool r55429 = r55425 <= r55428;
double r55430 = !r55429;
bool r55431 = r55427 || r55430;
double r55432 = 1.0;
double r55433 = r55432 / r55425;
double r55434 = 1.0;
double r55435 = 5.0;
double r55436 = pow(r55425, r55435);
double r55437 = r55434 / r55436;
double r55438 = 3.0;
double r55439 = pow(r55425, r55438);
double r55440 = r55434 / r55439;
double r55441 = r55437 - r55440;
double r55442 = r55433 + r55441;
double r55443 = r55425 * r55425;
double r55444 = r55443 + r55434;
double r55445 = r55425 / r55444;
double r55446 = r55431 ? r55442 : r55445;
return r55446;
}




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