\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.8453524061497666 \cdot 10^{+21}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 13951219.631737411:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\end{array}double f(double x) {
double r875205 = x;
double r875206 = r875205 * r875205;
double r875207 = 1.0;
double r875208 = r875206 + r875207;
double r875209 = r875205 / r875208;
return r875209;
}
double f(double x) {
double r875210 = x;
double r875211 = -1.8453524061497666e+21;
bool r875212 = r875210 <= r875211;
double r875213 = 1.0;
double r875214 = r875213 / r875210;
double r875215 = r875210 * r875210;
double r875216 = r875214 / r875215;
double r875217 = r875214 - r875216;
double r875218 = 5.0;
double r875219 = pow(r875210, r875218);
double r875220 = r875213 / r875219;
double r875221 = r875217 + r875220;
double r875222 = 13951219.631737411;
bool r875223 = r875210 <= r875222;
double r875224 = fma(r875210, r875210, r875213);
double r875225 = r875210 / r875224;
double r875226 = r875223 ? r875225 : r875221;
double r875227 = r875212 ? r875221 : r875226;
return r875227;
}




Bits error versus x
| Original | 15.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -1.8453524061497666e+21 or 13951219.631737411 < x Initial program 31.5
Simplified31.5
Taylor expanded around -inf 0.0
Simplified0.0
if -1.8453524061497666e+21 < x < 13951219.631737411Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019152 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))