Average Error: 29.5 → 0.2
Time: 5.6m
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -10461.801402471829:\\ \;\;\;\;(3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \left(\frac{-1}{x \cdot x}\right))_*\\ \mathbf{elif}\;x \le 8688.451192654346:\\ \;\;\;\;(x \cdot \left(\frac{1}{1 + x}\right) + \left(-\sqrt[3]{\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right)\right)}\right))_*\\ \mathbf{else}:\\ \;\;\;\;(3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \left(\frac{-1}{x \cdot x}\right))_*\\ \end{array}\]
double f(double x) {
        double r25390169 = x;
        double r25390170 = 1.0;
        double r25390171 = r25390169 + r25390170;
        double r25390172 = r25390169 / r25390171;
        double r25390173 = r25390169 - r25390170;
        double r25390174 = r25390171 / r25390173;
        double r25390175 = r25390172 - r25390174;
        return r25390175;
}

double f(double x) {
        double r25390176 = x;
        double r25390177 = -10461.801402471829;
        bool r25390178 = r25390176 <= r25390177;
        double r25390179 = 3.0;
        double r25390180 = -1.0;
        double r25390181 = r25390180 / r25390176;
        double r25390182 = r25390176 * r25390176;
        double r25390183 = r25390181 / r25390182;
        double r25390184 = r25390181 + r25390183;
        double r25390185 = r25390180 / r25390182;
        double r25390186 = fma(r25390179, r25390184, r25390185);
        double r25390187 = 8688.451192654346;
        bool r25390188 = r25390176 <= r25390187;
        double r25390189 = 1.0;
        double r25390190 = r25390189 + r25390176;
        double r25390191 = r25390189 / r25390190;
        double r25390192 = r25390176 - r25390189;
        double r25390193 = r25390189 / r25390192;
        double r25390194 = r25390190 * r25390193;
        double r25390195 = r25390194 * r25390194;
        double r25390196 = r25390194 * r25390195;
        double r25390197 = cbrt(r25390196);
        double r25390198 = -r25390197;
        double r25390199 = fma(r25390176, r25390191, r25390198);
        double r25390200 = r25390188 ? r25390199 : r25390186;
        double r25390201 = r25390178 ? r25390186 : r25390200;
        return r25390201;
}

\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -10461.801402471829:\\
\;\;\;\;(3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \left(\frac{-1}{x \cdot x}\right))_*\\

\mathbf{elif}\;x \le 8688.451192654346:\\
\;\;\;\;(x \cdot \left(\frac{1}{1 + x}\right) + \left(-\sqrt[3]{\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right)\right)}\right))_*\\

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

\end{array}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -10461.801402471829 or 8688.451192654346 < x

    1. Initial program 59.5

      \[\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.3

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

    if -10461.801402471829 < x < 8688.451192654346

    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}{(x \cdot \left(\frac{1}{x + 1}\right) + \left(-\frac{1}{x - 1} \cdot \left(x + 1\right)\right))_* + (\left(-\frac{1}{x - 1}\right) \cdot \left(x + 1\right) + \left(\frac{1}{x - 1} \cdot \left(x + 1\right)\right))_*}\]
    6. Simplified0.1

      \[\leadsto (x \cdot \left(\frac{1}{x + 1}\right) + \left(-\frac{1}{x - 1} \cdot \left(x + 1\right)\right))_* + \color{blue}{0}\]
    7. Using strategy rm
    8. Applied add-cbrt-cube0.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -10461.801402471829:\\ \;\;\;\;(3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \left(\frac{-1}{x \cdot x}\right))_*\\ \mathbf{elif}\;x \le 8688.451192654346:\\ \;\;\;\;(x \cdot \left(\frac{1}{1 + x}\right) + \left(-\sqrt[3]{\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right) \cdot \left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right)\right)}\right))_*\\ \mathbf{else}:\\ \;\;\;\;(3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \left(\frac{-1}{x \cdot x}\right))_*\\ \end{array}\]

Reproduce

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