\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -17754.39869344371254555881023406982421875 \lor \neg \left(x \le 1913.506658456775085141998715698719024658\right):\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r117953 = 1.0;
double r117954 = x;
double r117955 = r117954 + r117953;
double r117956 = r117953 / r117955;
double r117957 = 2.0;
double r117958 = r117957 / r117954;
double r117959 = r117956 - r117958;
double r117960 = r117954 - r117953;
double r117961 = r117953 / r117960;
double r117962 = r117959 + r117961;
return r117962;
}
double f(double x) {
double r117963 = x;
double r117964 = -17754.398693443713;
bool r117965 = r117963 <= r117964;
double r117966 = 1913.506658456775;
bool r117967 = r117963 <= r117966;
double r117968 = !r117967;
bool r117969 = r117965 || r117968;
double r117970 = 2.0;
double r117971 = 7.0;
double r117972 = pow(r117963, r117971);
double r117973 = r117970 / r117972;
double r117974 = 5.0;
double r117975 = pow(r117963, r117974);
double r117976 = r117970 / r117975;
double r117977 = r117970 / r117963;
double r117978 = r117963 * r117963;
double r117979 = r117977 / r117978;
double r117980 = r117976 + r117979;
double r117981 = r117973 + r117980;
double r117982 = 1.0;
double r117983 = r117982 * r117963;
double r117984 = r117963 + r117982;
double r117985 = r117984 * r117970;
double r117986 = r117983 - r117985;
double r117987 = r117963 - r117982;
double r117988 = r117986 * r117987;
double r117989 = r117984 * r117963;
double r117990 = r117989 * r117982;
double r117991 = r117988 + r117990;
double r117992 = r117989 * r117987;
double r117993 = r117991 / r117992;
double r117994 = r117969 ? r117981 : r117993;
return r117994;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -17754.398693443713 or 1913.506658456775 < x Initial program 19.6
Taylor expanded around inf 0.5
Simplified0.5
rmApplied cube-mult0.5
Applied associate-/r*0.1
if -17754.398693443713 < x < 1913.506658456775Initial program 0.2
rmApplied frac-sub0.2
Applied frac-add0.0
Final simplification0.1
herbie shell --seed 2019325
(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))))