\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.0026376323582022:\\
\;\;\;\;\left(\frac{1}{x} - \frac{1}{x} \cdot \frac{\frac{1}{x}}{x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 1.020834055947729:\\
\;\;\;\;{x}^{5} + \left(x - x \cdot \left(x \cdot x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{1}{x} \cdot \frac{\frac{1}{x}}{x}\right) + \frac{1}{{x}^{5}}\\
\end{array}double f(double x) {
double r2160782 = x;
double r2160783 = r2160782 * r2160782;
double r2160784 = 1.0;
double r2160785 = r2160783 + r2160784;
double r2160786 = r2160782 / r2160785;
return r2160786;
}
double f(double x) {
double r2160787 = x;
double r2160788 = -1.0026376323582022;
bool r2160789 = r2160787 <= r2160788;
double r2160790 = 1.0;
double r2160791 = r2160790 / r2160787;
double r2160792 = r2160791 / r2160787;
double r2160793 = r2160791 * r2160792;
double r2160794 = r2160791 - r2160793;
double r2160795 = 5.0;
double r2160796 = pow(r2160787, r2160795);
double r2160797 = r2160790 / r2160796;
double r2160798 = r2160794 + r2160797;
double r2160799 = 1.020834055947729;
bool r2160800 = r2160787 <= r2160799;
double r2160801 = r2160787 * r2160787;
double r2160802 = r2160787 * r2160801;
double r2160803 = r2160787 - r2160802;
double r2160804 = r2160796 + r2160803;
double r2160805 = r2160800 ? r2160804 : r2160798;
double r2160806 = r2160789 ? r2160798 : r2160805;
return r2160806;
}




Bits error versus x
Results
| Original | 14.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.3 |
if x < -1.0026376323582022 or 1.020834055947729 < x Initial program 29.6
Simplified29.6
Taylor expanded around inf 0.2
Simplified0.2
if -1.0026376323582022 < x < 1.020834055947729Initial program 0.0
Simplified0.0
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))