Average Error: 29.0 → 0.1
Time: 35.6s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -7803.196355276564:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 9656.080272906422:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}, \sqrt[3]{\frac{x}{x + 1}}, \left(x + 1\right) \cdot \frac{-1}{x - 1}\right) + \mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -7803.196355276564:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\

\mathbf{elif}\;x \le 9656.080272906422:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}, \sqrt[3]{\frac{x}{x + 1}}, \left(x + 1\right) \cdot \frac{-1}{x - 1}\right) + \mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\

\end{array}
double f(double x) {
        double r3238886 = x;
        double r3238887 = 1.0;
        double r3238888 = r3238886 + r3238887;
        double r3238889 = r3238886 / r3238888;
        double r3238890 = r3238886 - r3238887;
        double r3238891 = r3238888 / r3238890;
        double r3238892 = r3238889 - r3238891;
        return r3238892;
}

double f(double x) {
        double r3238893 = x;
        double r3238894 = -7803.196355276564;
        bool r3238895 = r3238893 <= r3238894;
        double r3238896 = -3.0;
        double r3238897 = r3238893 * r3238893;
        double r3238898 = r3238897 * r3238893;
        double r3238899 = r3238896 / r3238898;
        double r3238900 = 3.0;
        double r3238901 = r3238900 / r3238893;
        double r3238902 = 1.0;
        double r3238903 = r3238902 / r3238897;
        double r3238904 = r3238901 + r3238903;
        double r3238905 = r3238899 - r3238904;
        double r3238906 = 9656.080272906422;
        bool r3238907 = r3238893 <= r3238906;
        double r3238908 = r3238893 + r3238902;
        double r3238909 = r3238893 / r3238908;
        double r3238910 = cbrt(r3238909);
        double r3238911 = r3238910 * r3238910;
        double r3238912 = -1.0;
        double r3238913 = r3238893 - r3238902;
        double r3238914 = r3238912 / r3238913;
        double r3238915 = r3238908 * r3238914;
        double r3238916 = fma(r3238911, r3238910, r3238915);
        double r3238917 = r3238902 / r3238913;
        double r3238918 = r3238908 * r3238917;
        double r3238919 = fma(r3238914, r3238908, r3238918);
        double r3238920 = r3238916 + r3238919;
        double r3238921 = r3238907 ? r3238920 : r3238905;
        double r3238922 = r3238895 ? r3238905 : r3238921;
        return r3238922;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -7803.196355276564 or 9656.080272906422 < x

    1. Initial program 59.3

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Taylor expanded around inf 0.3

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

      \[\leadsto \color{blue}{\frac{-3}{x \cdot \left(x \cdot x\right)} - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)}\]

    if -7803.196355276564 < x < 9656.080272906422

    1. Initial program 0.1

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied div-inv0.1

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(x + 1\right) \cdot \frac{1}{x - 1}}\]
    4. Applied add-cube-cbrt0.1

      \[\leadsto \color{blue}{\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}\right) \cdot \sqrt[3]{\frac{x}{x + 1}}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    5. Applied prod-diff0.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -7803.196355276564:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 9656.080272906422:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}, \sqrt[3]{\frac{x}{x + 1}}, \left(x + 1\right) \cdot \frac{-1}{x - 1}\right) + \mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019149 +o rules:numerics
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))