\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9939699131687192:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\mathbf{elif}\;x \le 1.2572991461165262:\\
\;\;\;\;\left(\left(1 - x\right) + \frac{-2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\end{array}double f(double x) {
double r15805477 = 1.0;
double r15805478 = x;
double r15805479 = r15805478 + r15805477;
double r15805480 = r15805477 / r15805479;
double r15805481 = 2.0;
double r15805482 = r15805481 / r15805478;
double r15805483 = r15805480 - r15805482;
double r15805484 = r15805478 - r15805477;
double r15805485 = r15805477 / r15805484;
double r15805486 = r15805483 + r15805485;
return r15805486;
}
double f(double x) {
double r15805487 = x;
double r15805488 = -0.9939699131687192;
bool r15805489 = r15805487 <= r15805488;
double r15805490 = 2.0;
double r15805491 = 7.0;
double r15805492 = pow(r15805487, r15805491);
double r15805493 = r15805490 / r15805492;
double r15805494 = 5.0;
double r15805495 = pow(r15805487, r15805494);
double r15805496 = r15805490 / r15805495;
double r15805497 = r15805490 / r15805487;
double r15805498 = r15805497 / r15805487;
double r15805499 = r15805498 / r15805487;
double r15805500 = r15805496 + r15805499;
double r15805501 = r15805493 + r15805500;
double r15805502 = 1.2572991461165262;
bool r15805503 = r15805487 <= r15805502;
double r15805504 = 1.0;
double r15805505 = r15805504 - r15805487;
double r15805506 = -2.0;
double r15805507 = r15805506 / r15805487;
double r15805508 = r15805505 + r15805507;
double r15805509 = r15805487 - r15805504;
double r15805510 = r15805504 / r15805509;
double r15805511 = r15805508 + r15805510;
double r15805512 = r15805503 ? r15805511 : r15805501;
double r15805513 = r15805489 ? r15805501 : r15805512;
return r15805513;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
if x < -0.9939699131687192 or 1.2572991461165262 < x Initial program 19.8
Taylor expanded around inf 0.7
Simplified0.3
rmApplied associate-/r*0.3
if -0.9939699131687192 < x < 1.2572991461165262Initial program 0.0
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.4
herbie shell --seed 2019125 +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))))