\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{1 + x \cdot x}}}{\sqrt{1 + x \cdot x}}\\
\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 r935524 = x;
double r935525 = r935524 * r935524;
double r935526 = 1.0;
double r935527 = r935525 + r935526;
double r935528 = r935524 / r935527;
return r935528;
}
double f(double x) {
double r935529 = x;
double r935530 = -31939.41578853163;
bool r935531 = r935529 <= r935530;
double r935532 = 1.0;
double r935533 = r935532 / r935529;
double r935534 = r935529 * r935529;
double r935535 = r935533 / r935534;
double r935536 = r935533 - r935535;
double r935537 = 5.0;
double r935538 = pow(r935529, r935537);
double r935539 = r935532 / r935538;
double r935540 = r935536 + r935539;
double r935541 = 450.35164288801093;
bool r935542 = r935529 <= r935541;
double r935543 = r935532 + r935534;
double r935544 = sqrt(r935543);
double r935545 = r935529 / r935544;
double r935546 = r935545 / r935544;
double r935547 = r935542 ? r935546 : r935540;
double r935548 = r935531 ? r935540 : r935547;
return r935548;
}




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