\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -1440571.9585081101395189762115478515625:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 168550.15379253146238625049591064453125:\\
\;\;\;\;\frac{1 \cdot \left(x \cdot \left(x - 1\right)\right) - \left(x + 1\right) \cdot \left(2 \cdot \left(x - 1\right) - x \cdot 1\right)}{\left(x + 1\right) \cdot \left(x \cdot \left(x - 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r9164602 = 1.0;
double r9164603 = x;
double r9164604 = r9164603 + r9164602;
double r9164605 = r9164602 / r9164604;
double r9164606 = 2.0;
double r9164607 = r9164606 / r9164603;
double r9164608 = r9164605 - r9164607;
double r9164609 = r9164603 - r9164602;
double r9164610 = r9164602 / r9164609;
double r9164611 = r9164608 + r9164610;
return r9164611;
}
double f(double x) {
double r9164612 = x;
double r9164613 = -1440571.9585081101;
bool r9164614 = r9164612 <= r9164613;
double r9164615 = 2.0;
double r9164616 = 7.0;
double r9164617 = pow(r9164612, r9164616);
double r9164618 = r9164615 / r9164617;
double r9164619 = r9164612 * r9164612;
double r9164620 = r9164612 * r9164619;
double r9164621 = r9164615 / r9164620;
double r9164622 = 5.0;
double r9164623 = pow(r9164612, r9164622);
double r9164624 = r9164615 / r9164623;
double r9164625 = r9164621 + r9164624;
double r9164626 = r9164618 + r9164625;
double r9164627 = 168550.15379253146;
bool r9164628 = r9164612 <= r9164627;
double r9164629 = 1.0;
double r9164630 = r9164612 - r9164629;
double r9164631 = r9164612 * r9164630;
double r9164632 = r9164629 * r9164631;
double r9164633 = r9164612 + r9164629;
double r9164634 = r9164615 * r9164630;
double r9164635 = r9164612 * r9164629;
double r9164636 = r9164634 - r9164635;
double r9164637 = r9164633 * r9164636;
double r9164638 = r9164632 - r9164637;
double r9164639 = r9164633 * r9164631;
double r9164640 = r9164638 / r9164639;
double r9164641 = r9164628 ? r9164640 : r9164626;
double r9164642 = r9164614 ? r9164626 : r9164641;
return r9164642;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if x < -1440571.9585081101 or 168550.15379253146 < x Initial program 19.5
Taylor expanded around inf 0.5
Simplified0.6
if -1440571.9585081101 < x < 168550.15379253146Initial program 0.3
rmApplied associate-+l-0.3
rmApplied frac-sub0.3
Applied frac-sub0.0
Final simplification0.3
herbie shell --seed 2019173
(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))))