\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -267060974.6176845133304595947265625:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x \cdot x}}{x}\right) + \frac{1}{x}\\
\mathbf{elif}\;x \le 508.8749887332332946243695914745330810547:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x \cdot x}}{x}\right) + \frac{1}{x}\\
\end{array}double f(double x) {
double r2330149 = x;
double r2330150 = r2330149 * r2330149;
double r2330151 = 1.0;
double r2330152 = r2330150 + r2330151;
double r2330153 = r2330149 / r2330152;
return r2330153;
}
double f(double x) {
double r2330154 = x;
double r2330155 = -267060974.6176845;
bool r2330156 = r2330154 <= r2330155;
double r2330157 = 1.0;
double r2330158 = 5.0;
double r2330159 = pow(r2330154, r2330158);
double r2330160 = r2330157 / r2330159;
double r2330161 = r2330154 * r2330154;
double r2330162 = r2330157 / r2330161;
double r2330163 = r2330162 / r2330154;
double r2330164 = r2330160 - r2330163;
double r2330165 = 1.0;
double r2330166 = r2330165 / r2330154;
double r2330167 = r2330164 + r2330166;
double r2330168 = 508.8749887332333;
bool r2330169 = r2330154 <= r2330168;
double r2330170 = fma(r2330154, r2330154, r2330157);
double r2330171 = r2330154 / r2330170;
double r2330172 = r2330169 ? r2330171 : r2330167;
double r2330173 = r2330156 ? r2330167 : r2330172;
return r2330173;
}




Bits error versus x
| Original | 14.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -267060974.6176845 or 508.8749887332333 < x Initial program 29.6
Simplified29.6
Taylor expanded around inf 0.0
Simplified0.0
if -267060974.6176845 < x < 508.8749887332333Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1.0 (+ x (/ 1.0 x)))
(/ x (+ (* x x) 1.0)))