\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -109.157505507267487 \lor \neg \left(x \le 120.214345156184848\right):\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right) + \frac{2}{{x}^{5}}\\
\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 r56489 = 1.0;
double r56490 = x;
double r56491 = r56490 + r56489;
double r56492 = r56489 / r56491;
double r56493 = 2.0;
double r56494 = r56493 / r56490;
double r56495 = r56492 - r56494;
double r56496 = r56490 - r56489;
double r56497 = r56489 / r56496;
double r56498 = r56495 + r56497;
return r56498;
}
double f(double x) {
double r56499 = x;
double r56500 = -109.15750550726749;
bool r56501 = r56499 <= r56500;
double r56502 = 120.21434515618485;
bool r56503 = r56499 <= r56502;
double r56504 = !r56503;
bool r56505 = r56501 || r56504;
double r56506 = 2.0;
double r56507 = 7.0;
double r56508 = pow(r56499, r56507);
double r56509 = r56506 / r56508;
double r56510 = r56506 / r56499;
double r56511 = r56510 / r56499;
double r56512 = r56511 / r56499;
double r56513 = r56509 + r56512;
double r56514 = 5.0;
double r56515 = pow(r56499, r56514);
double r56516 = r56506 / r56515;
double r56517 = r56513 + r56516;
double r56518 = 1.0;
double r56519 = r56518 * r56499;
double r56520 = r56499 + r56518;
double r56521 = r56520 * r56506;
double r56522 = r56519 - r56521;
double r56523 = r56520 * r56499;
double r56524 = r56522 / r56523;
double r56525 = r56499 - r56518;
double r56526 = r56518 / r56525;
double r56527 = r56524 + r56526;
double r56528 = r56505 ? r56517 : r56527;
return r56528;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -109.15750550726749 or 120.21434515618485 < x Initial program 19.4
rmApplied frac-sub52.6
Taylor expanded around inf 0.5
Simplified0.5
rmApplied unpow30.5
Applied associate-/r*0.1
rmApplied associate-/r*0.1
if -109.15750550726749 < x < 120.21434515618485Initial program 0.0
rmApplied frac-sub0.0
Final simplification0.1
herbie shell --seed 2019199
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2.0 (* x (- (* x x) 1.0)))
(+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))