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

\mathbf{elif}\;x \le 12311.34325898398:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, 1 + x, \left(1 + x\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(x, \frac{1}{1 + x}, \frac{-\mathsf{fma}\left(x, x, -1\right)}{\left(x - 1\right) \cdot \left(x - 1\right)}\right)\\

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

\end{array}
double f(double x) {
        double r2072978 = x;
        double r2072979 = 1.0;
        double r2072980 = r2072978 + r2072979;
        double r2072981 = r2072978 / r2072980;
        double r2072982 = r2072978 - r2072979;
        double r2072983 = r2072980 / r2072982;
        double r2072984 = r2072981 - r2072983;
        return r2072984;
}

double f(double x) {
        double r2072985 = x;
        double r2072986 = -13167.552073147652;
        bool r2072987 = r2072985 <= r2072986;
        double r2072988 = -3.0;
        double r2072989 = r2072988 / r2072985;
        double r2072990 = -1.0;
        double r2072991 = r2072985 * r2072985;
        double r2072992 = r2072990 / r2072991;
        double r2072993 = r2072989 + r2072992;
        double r2072994 = r2072991 * r2072985;
        double r2072995 = r2072988 / r2072994;
        double r2072996 = r2072993 + r2072995;
        double r2072997 = 12311.34325898398;
        bool r2072998 = r2072985 <= r2072997;
        double r2072999 = 1.0;
        double r2073000 = r2072985 - r2072999;
        double r2073001 = r2072990 / r2073000;
        double r2073002 = r2072999 + r2072985;
        double r2073003 = r2072999 / r2073000;
        double r2073004 = r2073002 * r2073003;
        double r2073005 = fma(r2073001, r2073002, r2073004);
        double r2073006 = r2072999 / r2073002;
        double r2073007 = fma(r2072985, r2072985, r2072990);
        double r2073008 = -r2073007;
        double r2073009 = r2073000 * r2073000;
        double r2073010 = r2073008 / r2073009;
        double r2073011 = fma(r2072985, r2073006, r2073010);
        double r2073012 = r2073005 + r2073011;
        double r2073013 = r2072998 ? r2073012 : r2072996;
        double r2073014 = r2072987 ? r2072996 : r2073013;
        return r2073014;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -13167.552073147652 or 12311.34325898398 < x

    1. Initial program 59.1

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

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

    if -13167.552073147652 < x < 12311.34325898398

    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 div-inv0.1

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(x, \frac{1}{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)}\]
    6. Using strategy rm
    7. Applied flip-+0.1

      \[\leadsto \mathsf{fma}\left(x, \frac{1}{x + 1}, -\frac{1}{x - 1} \cdot \color{blue}{\frac{x \cdot x - 1 \cdot 1}{x - 1}}\right) + \mathsf{fma}\left(-\frac{1}{x - 1}, x + 1, \frac{1}{x - 1} \cdot \left(x + 1\right)\right)\]
    8. Applied frac-times0.1

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

      \[\leadsto \mathsf{fma}\left(x, \frac{1}{x + 1}, -\frac{\color{blue}{\mathsf{fma}\left(x, x, -1\right)}}{\left(x - 1\right) \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 -13167.552073147652:\\ \;\;\;\;\left(\frac{-3}{x} + \frac{-1}{x \cdot x}\right) + \frac{-3}{\left(x \cdot x\right) \cdot x}\\ \mathbf{elif}\;x \le 12311.34325898398:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, 1 + x, \left(1 + x\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(x, \frac{1}{1 + x}, \frac{-\mathsf{fma}\left(x, x, -1\right)}{\left(x - 1\right) \cdot \left(x - 1\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{-3}{x} + \frac{-1}{x \cdot x}\right) + \frac{-3}{\left(x \cdot x\right) \cdot x}\\ \end{array}\]

Reproduce

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