\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le \frac{-1596917391303941}{33554432} \lor \neg \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le \frac{1}{19807040628566084398385987584}\right):\\
\;\;\;\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\end{array}double f(double x) {
double r421965 = 1.0;
double r421966 = x;
double r421967 = r421966 + r421965;
double r421968 = r421965 / r421967;
double r421969 = 2.0;
double r421970 = r421969 / r421966;
double r421971 = r421968 - r421970;
double r421972 = r421966 - r421965;
double r421973 = r421965 / r421972;
double r421974 = r421971 + r421973;
return r421974;
}
double f(double x) {
double r421975 = 1.0;
double r421976 = x;
double r421977 = r421976 + r421975;
double r421978 = r421975 / r421977;
double r421979 = 2.0;
double r421980 = r421979 / r421976;
double r421981 = r421978 - r421980;
double r421982 = r421976 - r421975;
double r421983 = r421975 / r421982;
double r421984 = r421981 + r421983;
double r421985 = -1596917391303941.0;
double r421986 = 33554432.0;
double r421987 = r421985 / r421986;
bool r421988 = r421984 <= r421987;
double r421989 = 1.9807040628566084e+28;
double r421990 = r421975 / r421989;
bool r421991 = r421984 <= r421990;
double r421992 = !r421991;
bool r421993 = r421988 || r421992;
double r421994 = 1.0;
double r421995 = 7.0;
double r421996 = pow(r421976, r421995);
double r421997 = r421994 / r421996;
double r421998 = 5.0;
double r421999 = pow(r421976, r421998);
double r422000 = r421994 / r421999;
double r422001 = 3.0;
double r422002 = -r422001;
double r422003 = pow(r421976, r422002);
double r422004 = r422000 + r422003;
double r422005 = r421997 + r422004;
double r422006 = r421979 * r422005;
double r422007 = r421993 ? r421984 : r422006;
return r422007;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.7 |
if (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < -47591846.92215744Initial program 0.0
rmApplied frac-sub0.0
if -47591846.92215744 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < 5.048709793414476e-29Initial program 19.4
Taylor expanded around inf 1.4
Simplified1.4
rmApplied pow-flip0.9
if 5.048709793414476e-29 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) Initial program 0.9
Final simplification0.7
herbie shell --seed 350497007
(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))))