\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -4182345296.2656183 \lor \neg \left(x \le 50461.0592015108195\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{{x}^{5}} - \frac{1}{{x}^{3}}\right) + \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r42540 = x;
double r42541 = r42540 * r42540;
double r42542 = 1.0;
double r42543 = r42541 + r42542;
double r42544 = r42540 / r42543;
return r42544;
}
double f(double x) {
double r42545 = x;
double r42546 = -4182345296.2656183;
bool r42547 = r42545 <= r42546;
double r42548 = 50461.05920151082;
bool r42549 = r42545 <= r42548;
double r42550 = !r42549;
bool r42551 = r42547 || r42550;
double r42552 = 1.0;
double r42553 = 1.0;
double r42554 = 5.0;
double r42555 = pow(r42545, r42554);
double r42556 = r42553 / r42555;
double r42557 = 3.0;
double r42558 = pow(r42545, r42557);
double r42559 = r42553 / r42558;
double r42560 = r42556 - r42559;
double r42561 = r42552 * r42560;
double r42562 = r42553 / r42545;
double r42563 = r42561 + r42562;
double r42564 = r42545 * r42545;
double r42565 = r42564 + r42552;
double r42566 = r42553 / r42565;
double r42567 = r42545 * r42566;
double r42568 = r42551 ? r42563 : r42567;
return r42568;
}




Bits error versus x
Results
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -4182345296.2656183 or 50461.05920151082 < x Initial program 30.8
Taylor expanded around inf 0.0
Simplified0.0
if -4182345296.2656183 < x < 50461.05920151082Initial program 0.0
rmApplied div-inv0.0
Final simplification0.0
herbie shell --seed 2020057
(FPCore (x)
:name "x / (x^2 + 1)"
:precision binary64
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))