\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -16681204427079.668:\\
\;\;\;\;\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 380.83448745307305:\\
\;\;\;\;\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 r1091216 = x;
double r1091217 = r1091216 * r1091216;
double r1091218 = 1.0;
double r1091219 = r1091217 + r1091218;
double r1091220 = r1091216 / r1091219;
return r1091220;
}
double f(double x) {
double r1091221 = x;
double r1091222 = -16681204427079.668;
bool r1091223 = r1091221 <= r1091222;
double r1091224 = 1.0;
double r1091225 = r1091224 / r1091221;
double r1091226 = r1091221 * r1091221;
double r1091227 = r1091225 / r1091226;
double r1091228 = r1091226 * r1091221;
double r1091229 = r1091228 * r1091226;
double r1091230 = r1091224 / r1091229;
double r1091231 = r1091227 - r1091230;
double r1091232 = r1091225 - r1091231;
double r1091233 = 380.83448745307305;
bool r1091234 = r1091221 <= r1091233;
double r1091235 = r1091226 * r1091226;
double r1091236 = r1091235 - r1091224;
double r1091237 = r1091221 / r1091236;
double r1091238 = r1091226 - r1091224;
double r1091239 = r1091237 * r1091238;
double r1091240 = r1091234 ? r1091239 : r1091232;
double r1091241 = r1091223 ? r1091232 : r1091240;
return r1091241;
}




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