\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -111.0202622422814613400987582281231880188 \lor \neg \left(x \le 109.8975046823589565292422776110470294952\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x + 1} - \left(\frac{2}{x} - \frac{1}{x - 1}\right)\\
\end{array}double f(double x) {
double r177955 = 1.0;
double r177956 = x;
double r177957 = r177956 + r177955;
double r177958 = r177955 / r177957;
double r177959 = 2.0;
double r177960 = r177959 / r177956;
double r177961 = r177958 - r177960;
double r177962 = r177956 - r177955;
double r177963 = r177955 / r177962;
double r177964 = r177961 + r177963;
return r177964;
}
double f(double x) {
double r177965 = x;
double r177966 = -111.02026224228146;
bool r177967 = r177965 <= r177966;
double r177968 = 109.89750468235896;
bool r177969 = r177965 <= r177968;
double r177970 = !r177969;
bool r177971 = r177967 || r177970;
double r177972 = 2.0;
double r177973 = 1.0;
double r177974 = 7.0;
double r177975 = pow(r177965, r177974);
double r177976 = r177973 / r177975;
double r177977 = 5.0;
double r177978 = pow(r177965, r177977);
double r177979 = r177973 / r177978;
double r177980 = 3.0;
double r177981 = -r177980;
double r177982 = pow(r177965, r177981);
double r177983 = r177979 + r177982;
double r177984 = r177976 + r177983;
double r177985 = r177972 * r177984;
double r177986 = 1.0;
double r177987 = r177965 + r177986;
double r177988 = r177986 / r177987;
double r177989 = r177972 / r177965;
double r177990 = r177965 - r177986;
double r177991 = r177986 / r177990;
double r177992 = r177989 - r177991;
double r177993 = r177988 - r177992;
double r177994 = r177971 ? r177985 : r177993;
return r177994;
}




Bits error versus x
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -111.02026224228146 or 109.89750468235896 < x Initial program 18.8
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -111.02026224228146 < x < 109.89750468235896Initial program 0.0
rmApplied associate-+l-0.0
Final simplification0.0
herbie shell --seed 2019353
(FPCore (x)
:name "3frac (problem 3.3.3)"
:precision binary64
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))