\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -110.47721459746352:\\
\;\;\;\;\frac{\frac{2}{x}}{x \cdot x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 108.81613413709378:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\left(x \cdot x\right) \cdot x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r2953552 = 1.0;
double r2953553 = x;
double r2953554 = r2953553 + r2953552;
double r2953555 = r2953552 / r2953554;
double r2953556 = 2.0;
double r2953557 = r2953556 / r2953553;
double r2953558 = r2953555 - r2953557;
double r2953559 = r2953553 - r2953552;
double r2953560 = r2953552 / r2953559;
double r2953561 = r2953558 + r2953560;
return r2953561;
}
double f(double x) {
double r2953562 = x;
double r2953563 = -110.47721459746352;
bool r2953564 = r2953562 <= r2953563;
double r2953565 = 2.0;
double r2953566 = r2953565 / r2953562;
double r2953567 = r2953562 * r2953562;
double r2953568 = r2953566 / r2953567;
double r2953569 = 7.0;
double r2953570 = pow(r2953562, r2953569);
double r2953571 = r2953565 / r2953570;
double r2953572 = 5.0;
double r2953573 = pow(r2953562, r2953572);
double r2953574 = r2953565 / r2953573;
double r2953575 = r2953571 + r2953574;
double r2953576 = r2953568 + r2953575;
double r2953577 = 108.81613413709378;
bool r2953578 = r2953562 <= r2953577;
double r2953579 = 1.0;
double r2953580 = r2953579 + r2953562;
double r2953581 = r2953579 / r2953580;
double r2953582 = r2953581 - r2953566;
double r2953583 = r2953562 - r2953579;
double r2953584 = r2953579 / r2953583;
double r2953585 = r2953582 + r2953584;
double r2953586 = r2953567 * r2953562;
double r2953587 = r2953565 / r2953586;
double r2953588 = r2953587 + r2953575;
double r2953589 = r2953578 ? r2953585 : r2953588;
double r2953590 = r2953564 ? r2953576 : r2953589;
return r2953590;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -110.47721459746352Initial program 19.6
Taylor expanded around inf 0.6
Simplified0.6
Taylor expanded around 0 0.6
Simplified0.1
if -110.47721459746352 < x < 108.81613413709378Initial program 0.1
rmApplied flip-+29.5
rmApplied flip--30.6
Applied associate-/r/30.6
Simplified0.1
if 108.81613413709378 < x Initial program 19.3
Taylor expanded around inf 0.5
Simplified0.5
Final simplification0.2
herbie shell --seed 2019129 +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))))