\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -16681204427079.668:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\
\mathbf{elif}\;x \le 431.15614654341414:\\
\;\;\;\;\frac{x}{\left(x \cdot x\right) \cdot \left(x \cdot x\right) + -1} \cdot \left(x \cdot x - 1\right)\\
\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 r10645259 = x;
double r10645260 = r10645259 * r10645259;
double r10645261 = 1.0;
double r10645262 = r10645260 + r10645261;
double r10645263 = r10645259 / r10645262;
return r10645263;
}
double f(double x) {
double r10645264 = x;
double r10645265 = -16681204427079.668;
bool r10645266 = r10645264 <= r10645265;
double r10645267 = 1.0;
double r10645268 = 5.0;
double r10645269 = pow(r10645264, r10645268);
double r10645270 = r10645267 / r10645269;
double r10645271 = r10645267 / r10645264;
double r10645272 = r10645270 + r10645271;
double r10645273 = r10645264 * r10645264;
double r10645274 = r10645273 * r10645264;
double r10645275 = r10645267 / r10645274;
double r10645276 = r10645272 - r10645275;
double r10645277 = 431.15614654341414;
bool r10645278 = r10645264 <= r10645277;
double r10645279 = r10645273 * r10645273;
double r10645280 = -1.0;
double r10645281 = r10645279 + r10645280;
double r10645282 = r10645264 / r10645281;
double r10645283 = r10645273 - r10645267;
double r10645284 = r10645282 * r10645283;
double r10645285 = r10645278 ? r10645284 : r10645276;
double r10645286 = r10645266 ? r10645276 : r10645285;
return r10645286;
}




Bits error versus x
Results
| Original | 14.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -16681204427079.668 or 431.15614654341414 < x Initial program 30.3
rmApplied flip-+48.1
Applied associate-/r/48.1
Simplified48.1
Taylor expanded around inf 0.0
Simplified0.0
if -16681204427079.668 < x < 431.15614654341414Initial 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)))