\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -748130049.40968013 \lor \neg \left(x \le 439.159106874169822\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{{x}^{5}} - \frac{1}{{x}^{3}}\right) + \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r50780 = x;
double r50781 = r50780 * r50780;
double r50782 = 1.0;
double r50783 = r50781 + r50782;
double r50784 = r50780 / r50783;
return r50784;
}
double f(double x) {
double r50785 = x;
double r50786 = -748130049.4096801;
bool r50787 = r50785 <= r50786;
double r50788 = 439.1591068741698;
bool r50789 = r50785 <= r50788;
double r50790 = !r50789;
bool r50791 = r50787 || r50790;
double r50792 = 1.0;
double r50793 = 1.0;
double r50794 = 5.0;
double r50795 = pow(r50785, r50794);
double r50796 = r50793 / r50795;
double r50797 = 3.0;
double r50798 = pow(r50785, r50797);
double r50799 = r50793 / r50798;
double r50800 = r50796 - r50799;
double r50801 = r50792 * r50800;
double r50802 = r50793 / r50785;
double r50803 = r50801 + r50802;
double r50804 = r50785 * r50785;
double r50805 = r50804 + r50792;
double r50806 = r50785 / r50805;
double r50807 = r50791 ? r50803 : r50806;
return r50807;
}




Bits error versus x
Results
| Original | 15.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -748130049.4096801 or 439.1591068741698 < x Initial program 31.0
Taylor expanded around inf 0.0
Simplified0.0
if -748130049.4096801 < x < 439.1591068741698Initial program 0.0
Final simplification0.0
herbie shell --seed 2020021
(FPCore (x)
:name "x / (x^2 + 1)"
:precision binary64
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))