\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -487177471.4868003:\\
\;\;\;\;\left(\frac{1}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)} - \frac{1}{\left(x \cdot x\right) \cdot x}\right) + \frac{1}{x}\\
\mathbf{elif}\;x \le 402.2628134253315:\\
\;\;\;\;\left(x \cdot x - 1\right) \cdot \frac{x}{\left(x \cdot x\right) \cdot \left(x \cdot x\right) + -1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)} - \frac{1}{\left(x \cdot x\right) \cdot x}\right) + \frac{1}{x}\\
\end{array}double f(double x) {
double r2171956 = x;
double r2171957 = r2171956 * r2171956;
double r2171958 = 1.0;
double r2171959 = r2171957 + r2171958;
double r2171960 = r2171956 / r2171959;
return r2171960;
}
double f(double x) {
double r2171961 = x;
double r2171962 = -487177471.4868003;
bool r2171963 = r2171961 <= r2171962;
double r2171964 = 1.0;
double r2171965 = r2171961 * r2171961;
double r2171966 = r2171965 * r2171961;
double r2171967 = r2171965 * r2171966;
double r2171968 = r2171964 / r2171967;
double r2171969 = r2171964 / r2171966;
double r2171970 = r2171968 - r2171969;
double r2171971 = r2171964 / r2171961;
double r2171972 = r2171970 + r2171971;
double r2171973 = 402.2628134253315;
bool r2171974 = r2171961 <= r2171973;
double r2171975 = r2171965 - r2171964;
double r2171976 = r2171965 * r2171965;
double r2171977 = -1.0;
double r2171978 = r2171976 + r2171977;
double r2171979 = r2171961 / r2171978;
double r2171980 = r2171975 * r2171979;
double r2171981 = r2171974 ? r2171980 : r2171972;
double r2171982 = r2171963 ? r2171972 : r2171981;
return r2171982;
}




Bits error versus x
Results
| Original | 15.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -487177471.4868003 or 402.2628134253315 < x Initial program 30.5
Taylor expanded around inf 0.0
Simplified0.0
if -487177471.4868003 < x < 402.2628134253315Initial program 0.0
rmApplied flip-+0.0
Applied associate-/r/0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019138
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))