Average Error: 9.6 → 0.1
Time: 6.2s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -98.6240485560662136776954866945743560791 \lor \neg \left(x \le 98.71861940061606333074450958520174026489\right):\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, \sqrt[3]{{\left(\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)\right)}^{3}}, -\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 -98.6240485560662136776954866945743560791 \lor \neg \left(x \le 98.71861940061606333074450958520174026489\right):\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, \sqrt[3]{{\left(\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)\right)}^{3}}, -\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 r102746 = 1.0;
        double r102747 = x;
        double r102748 = r102747 + r102746;
        double r102749 = r102746 / r102748;
        double r102750 = 2.0;
        double r102751 = r102750 / r102747;
        double r102752 = r102749 - r102751;
        double r102753 = r102747 - r102746;
        double r102754 = r102746 / r102753;
        double r102755 = r102752 + r102754;
        return r102755;
}

double f(double x) {
        double r102756 = x;
        double r102757 = -98.62404855606621;
        bool r102758 = r102756 <= r102757;
        double r102759 = 98.71861940061606;
        bool r102760 = r102756 <= r102759;
        double r102761 = !r102760;
        bool r102762 = r102758 || r102761;
        double r102763 = 2.0;
        double r102764 = 1.0;
        double r102765 = 7.0;
        double r102766 = pow(r102756, r102765);
        double r102767 = r102764 / r102766;
        double r102768 = 5.0;
        double r102769 = pow(r102756, r102768);
        double r102770 = r102764 / r102769;
        double r102771 = r102763 / r102756;
        double r102772 = r102756 * r102756;
        double r102773 = r102771 / r102772;
        double r102774 = fma(r102763, r102770, r102773);
        double r102775 = fma(r102763, r102767, r102774);
        double r102776 = 1.0;
        double r102777 = 3.0;
        double r102778 = pow(r102756, r102777);
        double r102779 = pow(r102776, r102777);
        double r102780 = r102778 + r102779;
        double r102781 = r102776 / r102780;
        double r102782 = r102776 - r102756;
        double r102783 = 2.0;
        double r102784 = pow(r102756, r102783);
        double r102785 = fma(r102776, r102782, r102784);
        double r102786 = pow(r102785, r102777);
        double r102787 = cbrt(r102786);
        double r102788 = r102771 * r102764;
        double r102789 = -r102788;
        double r102790 = fma(r102781, r102787, r102789);
        double r102791 = -r102764;
        double r102792 = r102791 + r102764;
        double r102793 = r102756 - r102776;
        double r102794 = r102776 / r102793;
        double r102795 = fma(r102771, r102792, r102794);
        double r102796 = r102790 + r102795;
        double r102797 = r102762 ? r102775 : r102796;
        return r102797;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -98.62404855606621 or 98.71861940061606 < x

    1. Initial program 19.2

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. 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)}\]
    3. Simplified0.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{2}{{x}^{3}}\right)\right)}\]
    4. Using strategy rm
    5. Applied cube-mult0.5

      \[\leadsto \mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{2}{\color{blue}{x \cdot \left(x \cdot x\right)}}\right)\right)\]
    6. Applied associate-/r*0.1

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

    if -98.62404855606621 < x < 98.71861940061606

    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 add-cbrt-cube0.0

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

      \[\leadsto \mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, \sqrt[3]{\color{blue}{{\left(\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)\right)}^{3}}}, -\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.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -98.6240485560662136776954866945743560791 \lor \neg \left(x \le 98.71861940061606333074450958520174026489\right):\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, \sqrt[3]{{\left(\mathsf{fma}\left(1, 1 - x, {x}^{2}\right)\right)}^{3}}, -\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))))