\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -116.2424656228328245788361527957022190094 \lor \neg \left(x \le 120.1050191778223279470694251358509063721\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot x - \left(x + 1\right) \cdot 2}{\left(x + 1\right) \cdot x} + \frac{1}{x - 1}\\
\end{array}double f(double x) {
double r138021 = 1.0;
double r138022 = x;
double r138023 = r138022 + r138021;
double r138024 = r138021 / r138023;
double r138025 = 2.0;
double r138026 = r138025 / r138022;
double r138027 = r138024 - r138026;
double r138028 = r138022 - r138021;
double r138029 = r138021 / r138028;
double r138030 = r138027 + r138029;
return r138030;
}
double f(double x) {
double r138031 = x;
double r138032 = -116.24246562283282;
bool r138033 = r138031 <= r138032;
double r138034 = 120.10501917782233;
bool r138035 = r138031 <= r138034;
double r138036 = !r138035;
bool r138037 = r138033 || r138036;
double r138038 = 2.0;
double r138039 = 1.0;
double r138040 = 7.0;
double r138041 = pow(r138031, r138040);
double r138042 = r138039 / r138041;
double r138043 = 5.0;
double r138044 = pow(r138031, r138043);
double r138045 = r138039 / r138044;
double r138046 = 3.0;
double r138047 = -r138046;
double r138048 = pow(r138031, r138047);
double r138049 = r138045 + r138048;
double r138050 = r138042 + r138049;
double r138051 = r138038 * r138050;
double r138052 = 1.0;
double r138053 = r138052 * r138031;
double r138054 = r138031 + r138052;
double r138055 = r138054 * r138038;
double r138056 = r138053 - r138055;
double r138057 = r138054 * r138031;
double r138058 = r138056 / r138057;
double r138059 = r138031 - r138052;
double r138060 = r138052 / r138059;
double r138061 = r138058 + r138060;
double r138062 = r138037 ? r138051 : r138061;
return r138062;
}




Bits error versus x
Results
| Original | 9.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.0 |
if x < -116.24246562283282 or 120.10501917782233 < x Initial program 19.4
Taylor expanded around inf 0.4
Simplified0.4
rmApplied pow-flip0.0
if -116.24246562283282 < x < 120.10501917782233Initial program 0.1
rmApplied frac-sub0.1
Final simplification0.0
herbie shell --seed 2019346
(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))))