double f(double x) {
double r4927156 = x;
double r4927157 = r4927156 * r4927156;
double r4927158 = 1.0;
double r4927159 = r4927157 + r4927158;
double r4927160 = r4927156 / r4927159;
return r4927160;
}
double f(double x) {
double r4927161 = x;
double r4927162 = -1.3266299825213365e+154;
bool r4927163 = r4927161 <= r4927162;
double r4927164 = 1.0;
double r4927165 = 5.0;
double r4927166 = pow(r4927161, r4927165);
double r4927167 = r4927164 / r4927166;
double r4927168 = r4927164 / r4927161;
double r4927169 = r4927167 + r4927168;
double r4927170 = r4927161 * r4927161;
double r4927171 = r4927170 * r4927161;
double r4927172 = r4927164 / r4927171;
double r4927173 = r4927169 - r4927172;
double r4927174 = 458.4570297860489;
bool r4927175 = r4927161 <= r4927174;
double r4927176 = fma(r4927161, r4927161, r4927164);
double r4927177 = sqrt(r4927176);
double r4927178 = r4927161 / r4927177;
double r4927179 = r4927178 / r4927177;
double r4927180 = r4927175 ? r4927179 : r4927173;
double r4927181 = r4927163 ? r4927173 : r4927180;
return r4927181;
}
\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -1.3266299825213365 \cdot 10^{+154}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\
\mathbf{elif}\;x \le 458.4570297860489:\\
\;\;\;\;\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\
\end{array}



Bits error versus x
| Original | 14.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -1.3266299825213365e+154 or 458.4570297860489 < x Initial program 39.9
Simplified39.9
Taylor expanded around inf 0.0
Simplified0.0
if -1.3266299825213365e+154 < x < 458.4570297860489Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied associate-/r*0.0
Final simplification0.0
herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))