\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -113.60321351793068:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 110.41034748839138:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\
\end{array}double f(double x) {
double r1837352 = 1.0;
double r1837353 = x;
double r1837354 = r1837353 + r1837352;
double r1837355 = r1837352 / r1837354;
double r1837356 = 2.0;
double r1837357 = r1837356 / r1837353;
double r1837358 = r1837355 - r1837357;
double r1837359 = r1837353 - r1837352;
double r1837360 = r1837352 / r1837359;
double r1837361 = r1837358 + r1837360;
return r1837361;
}
double f(double x) {
double r1837362 = x;
double r1837363 = -113.60321351793068;
bool r1837364 = r1837362 <= r1837363;
double r1837365 = 2.0;
double r1837366 = 7.0;
double r1837367 = pow(r1837362, r1837366);
double r1837368 = r1837365 / r1837367;
double r1837369 = r1837365 / r1837362;
double r1837370 = r1837362 * r1837362;
double r1837371 = r1837369 / r1837370;
double r1837372 = 5.0;
double r1837373 = pow(r1837362, r1837372);
double r1837374 = r1837365 / r1837373;
double r1837375 = r1837371 + r1837374;
double r1837376 = r1837368 + r1837375;
double r1837377 = 110.41034748839138;
bool r1837378 = r1837362 <= r1837377;
double r1837379 = 1.0;
double r1837380 = r1837379 + r1837362;
double r1837381 = r1837379 / r1837380;
double r1837382 = r1837381 - r1837369;
double r1837383 = r1837362 - r1837379;
double r1837384 = r1837379 / r1837383;
double r1837385 = r1837382 + r1837384;
double r1837386 = r1837370 * r1837362;
double r1837387 = r1837365 / r1837386;
double r1837388 = r1837387 + r1837374;
double r1837389 = r1837388 + r1837368;
double r1837390 = r1837378 ? r1837385 : r1837389;
double r1837391 = r1837364 ? r1837376 : r1837390;
return r1837391;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -113.60321351793068Initial program 19.2
Taylor expanded around inf 0.6
Simplified0.6
rmApplied associate-/r*0.1
if -113.60321351793068 < x < 110.41034748839138Initial program 0.0
if 110.41034748839138 < x Initial program 20.4
Taylor expanded around inf 0.5
Simplified0.5
Final simplification0.2
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))