\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -2678435.1094305497:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 11907527.731338572:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(x, x, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\end{array}double f(double x) {
double r969029 = x;
double r969030 = r969029 * r969029;
double r969031 = 1.0;
double r969032 = r969030 + r969031;
double r969033 = r969029 / r969032;
return r969033;
}
double f(double x) {
double r969034 = x;
double r969035 = -2678435.1094305497;
bool r969036 = r969034 <= r969035;
double r969037 = 1.0;
double r969038 = r969037 / r969034;
double r969039 = r969034 * r969034;
double r969040 = r969038 / r969039;
double r969041 = r969038 - r969040;
double r969042 = 5.0;
double r969043 = pow(r969034, r969042);
double r969044 = r969037 / r969043;
double r969045 = r969041 + r969044;
double r969046 = 11907527.731338572;
bool r969047 = r969034 <= r969046;
double r969048 = fma(r969034, r969034, r969037);
double r969049 = r969034 / r969048;
double r969050 = r969047 ? r969049 : r969045;
double r969051 = r969036 ? r969045 : r969050;
return r969051;
}




Bits error versus x
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -2678435.1094305497 or 11907527.731338572 < x Initial program 30.4
Simplified30.4
Taylor expanded around inf 0.0
Simplified0.0
if -2678435.1094305497 < x < 11907527.731338572Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019153 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))