\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -119.2186693862327:\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{{x}^{7}} + \frac{\frac{2}{x \cdot x}}{x}\right)\\
\mathbf{elif}\;x \le 109.3629970410856:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x \cdot x} \cdot \frac{2}{x} + \frac{2}{{x}^{7}}\right) + \frac{2}{{x}^{5}}\\
\end{array}double f(double x) {
double r3239474 = 1.0;
double r3239475 = x;
double r3239476 = r3239475 + r3239474;
double r3239477 = r3239474 / r3239476;
double r3239478 = 2.0;
double r3239479 = r3239478 / r3239475;
double r3239480 = r3239477 - r3239479;
double r3239481 = r3239475 - r3239474;
double r3239482 = r3239474 / r3239481;
double r3239483 = r3239480 + r3239482;
return r3239483;
}
double f(double x) {
double r3239484 = x;
double r3239485 = -119.2186693862327;
bool r3239486 = r3239484 <= r3239485;
double r3239487 = 2.0;
double r3239488 = 5.0;
double r3239489 = pow(r3239484, r3239488);
double r3239490 = r3239487 / r3239489;
double r3239491 = 7.0;
double r3239492 = pow(r3239484, r3239491);
double r3239493 = r3239487 / r3239492;
double r3239494 = r3239484 * r3239484;
double r3239495 = r3239487 / r3239494;
double r3239496 = r3239495 / r3239484;
double r3239497 = r3239493 + r3239496;
double r3239498 = r3239490 + r3239497;
double r3239499 = 109.3629970410856;
bool r3239500 = r3239484 <= r3239499;
double r3239501 = 1.0;
double r3239502 = r3239501 + r3239484;
double r3239503 = r3239501 / r3239502;
double r3239504 = r3239487 / r3239484;
double r3239505 = r3239503 - r3239504;
double r3239506 = r3239484 - r3239501;
double r3239507 = r3239501 / r3239506;
double r3239508 = r3239505 + r3239507;
double r3239509 = r3239501 / r3239494;
double r3239510 = r3239509 * r3239504;
double r3239511 = r3239510 + r3239493;
double r3239512 = r3239511 + r3239490;
double r3239513 = r3239500 ? r3239508 : r3239512;
double r3239514 = r3239486 ? r3239498 : r3239513;
return r3239514;
}




Bits error versus x
Results
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -119.2186693862327Initial program 19.5
rmApplied flip-+19.5
Taylor expanded around -inf 0.4
Simplified0.5
rmApplied associate-/r*0.1
if -119.2186693862327 < x < 109.3629970410856Initial program 0.1
rmApplied flip-+29.0
rmApplied flip--30.0
Applied associate-/r/30.0
Simplified0.1
if 109.3629970410856 < x Initial program 19.1
rmApplied flip-+19.1
Taylor expanded around -inf 0.6
Simplified0.7
rmApplied *-un-lft-identity0.7
Applied times-frac0.1
Final simplification0.1
herbie shell --seed 2019149 +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))))