Average Error: 9.6 → 0.0
Time: 7.2s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -113.0445804934405913400041754357516765594 \lor \neg \left(x \le 113.4156346060324409563691006042063236237\right):\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{\sqrt[3]{1}}{\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)} \cdot \sqrt[3]{1}\right) \cdot \frac{\sqrt[3]{1}}{x + 1}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -113.0445804934405913400041754357516765594 \lor \neg \left(x \le 113.4156346060324409563691006042063236237\right):\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(\frac{\sqrt[3]{1}}{\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)} \cdot \sqrt[3]{1}\right) \cdot \frac{\sqrt[3]{1}}{x + 1}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\\

\end{array}
double f(double x) {
        double r121565 = 1.0;
        double r121566 = x;
        double r121567 = r121566 + r121565;
        double r121568 = r121565 / r121567;
        double r121569 = 2.0;
        double r121570 = r121569 / r121566;
        double r121571 = r121568 - r121570;
        double r121572 = r121566 - r121565;
        double r121573 = r121565 / r121572;
        double r121574 = r121571 + r121573;
        return r121574;
}

double f(double x) {
        double r121575 = x;
        double r121576 = -113.04458049344059;
        bool r121577 = r121575 <= r121576;
        double r121578 = 113.41563460603244;
        bool r121579 = r121575 <= r121578;
        double r121580 = !r121579;
        bool r121581 = r121577 || r121580;
        double r121582 = 2.0;
        double r121583 = 1.0;
        double r121584 = 7.0;
        double r121585 = pow(r121575, r121584);
        double r121586 = r121583 / r121585;
        double r121587 = 5.0;
        double r121588 = pow(r121575, r121587);
        double r121589 = r121583 / r121588;
        double r121590 = 3.0;
        double r121591 = -r121590;
        double r121592 = pow(r121575, r121591);
        double r121593 = r121582 * r121592;
        double r121594 = fma(r121582, r121589, r121593);
        double r121595 = fma(r121582, r121586, r121594);
        double r121596 = 1.0;
        double r121597 = cbrt(r121596);
        double r121598 = r121596 - r121575;
        double r121599 = 2.0;
        double r121600 = pow(r121575, r121599);
        double r121601 = fma(r121596, r121598, r121600);
        double r121602 = r121597 / r121601;
        double r121603 = r121602 * r121597;
        double r121604 = r121575 + r121596;
        double r121605 = r121597 / r121604;
        double r121606 = r121603 * r121605;
        double r121607 = r121575 * r121575;
        double r121608 = r121596 * r121596;
        double r121609 = r121575 * r121596;
        double r121610 = r121608 - r121609;
        double r121611 = r121607 + r121610;
        double r121612 = r121582 / r121575;
        double r121613 = r121612 * r121583;
        double r121614 = -r121613;
        double r121615 = fma(r121606, r121611, r121614);
        double r121616 = -r121583;
        double r121617 = r121616 + r121583;
        double r121618 = r121575 - r121596;
        double r121619 = r121596 / r121618;
        double r121620 = fma(r121612, r121617, r121619);
        double r121621 = r121615 + r121620;
        double r121622 = r121581 ? r121595 : r121621;
        return r121622;
}

Error

Bits error versus x

Target

Original9.6
Target0.3
Herbie0.0
\[\frac{2}{x \cdot \left(x \cdot x - 1\right)}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -113.04458049344059 or 113.41563460603244 < x

    1. Initial program 19.2

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity19.2

      \[\leadsto \left(\frac{1}{x + 1} - \color{blue}{1 \cdot \frac{2}{x}}\right) + \frac{1}{x - 1}\]
    4. Applied flip3-+61.8

      \[\leadsto \left(\frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - 1 \cdot \frac{2}{x}\right) + \frac{1}{x - 1}\]
    5. Applied associate-/r/61.9

      \[\leadsto \left(\color{blue}{\frac{1}{{x}^{3} + {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right)} - 1 \cdot \frac{2}{x}\right) + \frac{1}{x - 1}\]
    6. Applied prod-diff61.9

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(-\frac{2}{x}, 1, \frac{2}{x} \cdot 1\right)\right)} + \frac{1}{x - 1}\]
    7. Applied associate-+l+61.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \left(\mathsf{fma}\left(-\frac{2}{x}, 1, \frac{2}{x} \cdot 1\right) + \frac{1}{x - 1}\right)}\]
    8. Simplified61.9

      \[\leadsto \mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \color{blue}{\mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)}\]
    9. Taylor expanded around inf 0.5

      \[\leadsto \color{blue}{2 \cdot \frac{1}{{x}^{7}} + \left(2 \cdot \frac{1}{{x}^{5}} + 2 \cdot \frac{1}{{x}^{3}}\right)}\]
    10. Simplified0.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot \frac{1}{{x}^{3}}\right)\right)}\]
    11. Using strategy rm
    12. Applied pow-flip0.0

      \[\leadsto \mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot \color{blue}{{x}^{\left(-3\right)}}\right)\right)\]

    if -113.04458049344059 < x < 113.41563460603244

    1. Initial program 0.0

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.0

      \[\leadsto \left(\frac{1}{x + 1} - \color{blue}{1 \cdot \frac{2}{x}}\right) + \frac{1}{x - 1}\]
    4. Applied flip3-+0.0

      \[\leadsto \left(\frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - 1 \cdot \frac{2}{x}\right) + \frac{1}{x - 1}\]
    5. Applied associate-/r/0.0

      \[\leadsto \left(\color{blue}{\frac{1}{{x}^{3} + {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right)} - 1 \cdot \frac{2}{x}\right) + \frac{1}{x - 1}\]
    6. Applied prod-diff0.0

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(-\frac{2}{x}, 1, \frac{2}{x} \cdot 1\right)\right)} + \frac{1}{x - 1}\]
    7. Applied associate-+l+0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \left(\mathsf{fma}\left(-\frac{2}{x}, 1, \frac{2}{x} \cdot 1\right) + \frac{1}{x - 1}\right)}\]
    8. Simplified0.0

      \[\leadsto \mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \color{blue}{\mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)}\]
    9. Using strategy rm
    10. Applied sum-cubes0.0

      \[\leadsto \mathsf{fma}\left(\frac{1}{\color{blue}{\left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right) \cdot \left(x + 1\right)}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
    11. Applied add-cube-cbrt0.0

      \[\leadsto \mathsf{fma}\left(\frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right) \cdot \left(x + 1\right)}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
    12. Applied times-frac0.0

      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)} \cdot \frac{\sqrt[3]{1}}{x + 1}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
    13. Simplified0.0

      \[\leadsto \mathsf{fma}\left(\color{blue}{\left(\frac{\sqrt[3]{1}}{\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)} \cdot \sqrt[3]{1}\right)} \cdot \frac{\sqrt[3]{1}}{x + 1}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -113.0445804934405913400041754357516765594 \lor \neg \left(x \le 113.4156346060324409563691006042063236237\right):\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{\sqrt[3]{1}}{\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)} \cdot \sqrt[3]{1}\right) \cdot \frac{\sqrt[3]{1}}{x + 1}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{2}{x} \cdot 1\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 +o rules:numerics
(FPCore (x)
  :name "3frac (problem 3.3.3)"
  :precision binary64

  :herbie-target
  (/ 2 (* x (- (* x x) 1)))

  (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))