\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -3717825341653.7866:\\
\;\;\;\;\frac{1}{x} - \left(\frac{\frac{1}{x}}{x \cdot x} - \frac{1}{\left(\left(x \cdot x\right) \cdot x\right) \cdot \left(x \cdot x\right)}\right)\\
\mathbf{elif}\;x \le 117441.38660009087:\\
\;\;\;\;\frac{x}{\left(x \cdot x\right) \cdot \left(x \cdot x\right) - 1} \cdot \left(x \cdot x - 1\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x} - \left(\frac{\frac{1}{x}}{x \cdot x} - \frac{1}{\left(\left(x \cdot x\right) \cdot x\right) \cdot \left(x \cdot x\right)}\right)\\
\end{array}double f(double x) {
double r1660518 = x;
double r1660519 = r1660518 * r1660518;
double r1660520 = 1.0;
double r1660521 = r1660519 + r1660520;
double r1660522 = r1660518 / r1660521;
return r1660522;
}
double f(double x) {
double r1660523 = x;
double r1660524 = -3717825341653.7866;
bool r1660525 = r1660523 <= r1660524;
double r1660526 = 1.0;
double r1660527 = r1660526 / r1660523;
double r1660528 = r1660523 * r1660523;
double r1660529 = r1660527 / r1660528;
double r1660530 = r1660528 * r1660523;
double r1660531 = r1660530 * r1660528;
double r1660532 = r1660526 / r1660531;
double r1660533 = r1660529 - r1660532;
double r1660534 = r1660527 - r1660533;
double r1660535 = 117441.38660009087;
bool r1660536 = r1660523 <= r1660535;
double r1660537 = r1660528 * r1660528;
double r1660538 = r1660537 - r1660526;
double r1660539 = r1660523 / r1660538;
double r1660540 = r1660528 - r1660526;
double r1660541 = r1660539 * r1660540;
double r1660542 = r1660536 ? r1660541 : r1660534;
double r1660543 = r1660525 ? r1660534 : r1660542;
return r1660543;
}




Bits error versus x
Results
| Original | 15.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -3717825341653.7866 or 117441.38660009087 < x Initial program 31.1
Taylor expanded around -inf 0.0
Simplified0.0
if -3717825341653.7866 < x < 117441.38660009087Initial program 0.0
rmApplied flip-+0.0
Applied associate-/r/0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019133
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))