\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -5442929637181724477620224000 \lor \neg \left(x \le 474.5306634629978930206561926752328872681\right):\\
\;\;\;\;\frac{1}{{x}^{5}} + \left(\frac{1}{x} - \frac{1}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot x - 1\right) \cdot \frac{x}{{x}^{3} \cdot x - 1 \cdot 1}\\
\end{array}double f(double x) {
double r70674 = x;
double r70675 = r70674 * r70674;
double r70676 = 1.0;
double r70677 = r70675 + r70676;
double r70678 = r70674 / r70677;
return r70678;
}
double f(double x) {
double r70679 = x;
double r70680 = -5.442929637181724e+27;
bool r70681 = r70679 <= r70680;
double r70682 = 474.5306634629979;
bool r70683 = r70679 <= r70682;
double r70684 = !r70683;
bool r70685 = r70681 || r70684;
double r70686 = 1.0;
double r70687 = 5.0;
double r70688 = pow(r70679, r70687);
double r70689 = r70686 / r70688;
double r70690 = 1.0;
double r70691 = r70690 / r70679;
double r70692 = 3.0;
double r70693 = pow(r70679, r70692);
double r70694 = r70686 / r70693;
double r70695 = r70691 - r70694;
double r70696 = r70689 + r70695;
double r70697 = r70679 * r70679;
double r70698 = r70697 - r70686;
double r70699 = r70693 * r70679;
double r70700 = r70686 * r70686;
double r70701 = r70699 - r70700;
double r70702 = r70679 / r70701;
double r70703 = r70698 * r70702;
double r70704 = r70685 ? r70696 : r70703;
return r70704;
}




Bits error versus x
Results
| Original | 14.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -5.442929637181724e+27 or 474.5306634629979 < x Initial program 30.9
rmApplied flip-+49.3
Applied associate-/r/49.3
Simplified49.3
Taylor expanded around inf 0.0
Simplified0.0
if -5.442929637181724e+27 < x < 474.5306634629979Initial program 0.0
rmApplied flip-+0.0
Applied associate-/r/0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019179
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1.0 (+ x (/ 1.0 x)))
(/ x (+ (* x x) 1.0)))