\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -111.6420365632021:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{\frac{2}{x}}{x}}{x} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 108.84391371430509:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\
\end{array}double f(double x) {
double r2175460 = 1.0;
double r2175461 = x;
double r2175462 = r2175461 + r2175460;
double r2175463 = r2175460 / r2175462;
double r2175464 = 2.0;
double r2175465 = r2175464 / r2175461;
double r2175466 = r2175463 - r2175465;
double r2175467 = r2175461 - r2175460;
double r2175468 = r2175460 / r2175467;
double r2175469 = r2175466 + r2175468;
return r2175469;
}
double f(double x) {
double r2175470 = x;
double r2175471 = -111.6420365632021;
bool r2175472 = r2175470 <= r2175471;
double r2175473 = 2.0;
double r2175474 = 7.0;
double r2175475 = pow(r2175470, r2175474);
double r2175476 = r2175473 / r2175475;
double r2175477 = r2175473 / r2175470;
double r2175478 = r2175477 / r2175470;
double r2175479 = r2175478 / r2175470;
double r2175480 = 5.0;
double r2175481 = pow(r2175470, r2175480);
double r2175482 = r2175473 / r2175481;
double r2175483 = r2175479 + r2175482;
double r2175484 = r2175476 + r2175483;
double r2175485 = 108.84391371430509;
bool r2175486 = r2175470 <= r2175485;
double r2175487 = 1.0;
double r2175488 = r2175487 + r2175470;
double r2175489 = r2175487 / r2175488;
double r2175490 = r2175489 - r2175477;
double r2175491 = r2175470 - r2175487;
double r2175492 = r2175487 / r2175491;
double r2175493 = r2175490 + r2175492;
double r2175494 = r2175470 * r2175470;
double r2175495 = r2175477 / r2175494;
double r2175496 = r2175495 + r2175482;
double r2175497 = r2175496 + r2175476;
double r2175498 = r2175486 ? r2175493 : r2175497;
double r2175499 = r2175472 ? r2175484 : r2175498;
return r2175499;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -111.6420365632021Initial program 19.6
Taylor expanded around inf 0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
if -111.6420365632021 < x < 108.84391371430509Initial program 0.0
if 108.84391371430509 < x Initial program 19.4
Taylor expanded around inf 0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied times-frac0.1
rmApplied associate-*r/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019152 +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))))