\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -473716199.82409686:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{\frac{1}{x}}{x}}{x}\right) + \frac{1}{x}\\
\mathbf{elif}\;x \le 433.85008447300646:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{\frac{1}{x}}{x}}{x}\right) + \frac{1}{x}\\
\end{array}double f(double x) {
double r3859158 = x;
double r3859159 = r3859158 * r3859158;
double r3859160 = 1.0;
double r3859161 = r3859159 + r3859160;
double r3859162 = r3859158 / r3859161;
return r3859162;
}
double f(double x) {
double r3859163 = x;
double r3859164 = -473716199.82409686;
bool r3859165 = r3859163 <= r3859164;
double r3859166 = 1.0;
double r3859167 = 5.0;
double r3859168 = pow(r3859163, r3859167);
double r3859169 = r3859166 / r3859168;
double r3859170 = r3859166 / r3859163;
double r3859171 = r3859170 / r3859163;
double r3859172 = r3859171 / r3859163;
double r3859173 = r3859169 - r3859172;
double r3859174 = r3859173 + r3859170;
double r3859175 = 433.85008447300646;
bool r3859176 = r3859163 <= r3859175;
double r3859177 = fma(r3859163, r3859163, r3859166);
double r3859178 = r3859163 / r3859177;
double r3859179 = r3859176 ? r3859178 : r3859174;
double r3859180 = r3859165 ? r3859174 : r3859179;
return r3859180;
}




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