\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -853997951174.7607421875 \lor \neg \left(x \le 529.5974544640389467531349509954452514648\right):\\
\;\;\;\;\left(\frac{1}{x} + \frac{1}{{x}^{5}}\right) - \frac{1}{{x}^{3}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r49200 = x;
double r49201 = r49200 * r49200;
double r49202 = 1.0;
double r49203 = r49201 + r49202;
double r49204 = r49200 / r49203;
return r49204;
}
double f(double x) {
double r49205 = x;
double r49206 = -853997951174.7607;
bool r49207 = r49205 <= r49206;
double r49208 = 529.597454464039;
bool r49209 = r49205 <= r49208;
double r49210 = !r49209;
bool r49211 = r49207 || r49210;
double r49212 = 1.0;
double r49213 = r49212 / r49205;
double r49214 = 1.0;
double r49215 = 5.0;
double r49216 = pow(r49205, r49215);
double r49217 = r49214 / r49216;
double r49218 = r49213 + r49217;
double r49219 = 3.0;
double r49220 = pow(r49205, r49219);
double r49221 = r49214 / r49220;
double r49222 = r49218 - r49221;
double r49223 = r49205 * r49205;
double r49224 = r49223 + r49214;
double r49225 = r49205 / r49224;
double r49226 = r49211 ? r49222 : r49225;
return r49226;
}




Bits error versus x
Results
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -853997951174.7607 or 529.597454464039 < x Initial program 30.5
rmApplied add-sqr-sqrt30.5
Applied *-un-lft-identity30.5
Applied times-frac30.4
Simplified30.4
Simplified30.4
Taylor expanded around inf 0.0
Simplified0.0
if -853997951174.7607 < x < 529.597454464039Initial program 0.0
Final simplification0.0
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
:name "x / (x^2 + 1)"
:precision binary64
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))