\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -31939.41578853163:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 450.35164288801093:\\
\;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\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 r816202 = x;
double r816203 = r816202 * r816202;
double r816204 = 1.0;
double r816205 = r816203 + r816204;
double r816206 = r816202 / r816205;
return r816206;
}
double f(double x) {
double r816207 = x;
double r816208 = -31939.41578853163;
bool r816209 = r816207 <= r816208;
double r816210 = 1.0;
double r816211 = r816210 / r816207;
double r816212 = r816207 * r816207;
double r816213 = r816211 / r816212;
double r816214 = r816211 - r816213;
double r816215 = 5.0;
double r816216 = pow(r816207, r816215);
double r816217 = r816210 / r816216;
double r816218 = r816214 + r816217;
double r816219 = 450.35164288801093;
bool r816220 = r816207 <= r816219;
double r816221 = fma(r816207, r816207, r816210);
double r816222 = sqrt(r816221);
double r816223 = r816207 / r816222;
double r816224 = r816223 / r816222;
double r816225 = r816220 ? r816224 : r816218;
double r816226 = r816209 ? r816218 : r816225;
return r816226;
}




Bits error versus x
| Original | 14.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -31939.41578853163 or 450.35164288801093 < x Initial program 30.4
Simplified30.4
Taylor expanded around inf 0.0
Simplified0.0
if -31939.41578853163 < x < 450.35164288801093Initial program 0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied associate-/r*0.0
Final simplification0.0
herbie shell --seed 2019154 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))