Average Error: 29.2 → 0.1
Time: 43.9s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -13167.552073147652:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 12311.34325898398:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(x, \frac{1}{x + 1}, \frac{-\mathsf{fma}\left(x, x, -1\right)}{\left(x - 1\right) \cdot \left(x - 1\right)}\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 -13167.552073147652:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\

\mathbf{elif}\;x \le 12311.34325898398:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(x, \frac{1}{x + 1}, \frac{-\mathsf{fma}\left(x, x, -1\right)}{\left(x - 1\right) \cdot \left(x - 1\right)}\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 r3915459 = x;
        double r3915460 = 1.0;
        double r3915461 = r3915459 + r3915460;
        double r3915462 = r3915459 / r3915461;
        double r3915463 = r3915459 - r3915460;
        double r3915464 = r3915461 / r3915463;
        double r3915465 = r3915462 - r3915464;
        return r3915465;
}

double f(double x) {
        double r3915466 = x;
        double r3915467 = -13167.552073147652;
        bool r3915468 = r3915466 <= r3915467;
        double r3915469 = -3.0;
        double r3915470 = r3915466 * r3915466;
        double r3915471 = r3915470 * r3915466;
        double r3915472 = r3915469 / r3915471;
        double r3915473 = 3.0;
        double r3915474 = r3915473 / r3915466;
        double r3915475 = 1.0;
        double r3915476 = r3915475 / r3915470;
        double r3915477 = r3915474 + r3915476;
        double r3915478 = r3915472 - r3915477;
        double r3915479 = 12311.34325898398;
        bool r3915480 = r3915466 <= r3915479;
        double r3915481 = -1.0;
        double r3915482 = r3915466 - r3915475;
        double r3915483 = r3915481 / r3915482;
        double r3915484 = r3915466 + r3915475;
        double r3915485 = r3915475 / r3915482;
        double r3915486 = r3915484 * r3915485;
        double r3915487 = fma(r3915483, r3915484, r3915486);
        double r3915488 = r3915475 / r3915484;
        double r3915489 = fma(r3915466, r3915466, r3915481);
        double r3915490 = -r3915489;
        double r3915491 = r3915482 * r3915482;
        double r3915492 = r3915490 / r3915491;
        double r3915493 = fma(r3915466, r3915488, r3915492);
        double r3915494 = r3915487 + r3915493;
        double r3915495 = r3915480 ? r3915494 : r3915478;
        double r3915496 = r3915468 ? r3915478 : r3915495;
        return r3915496;
}

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}{\frac{-3}{x \cdot \left(x \cdot x\right)} - \left(\frac{1}{x \cdot x} + \frac{3}{x}\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:\\ \;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 12311.34325898398:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, x + 1, \left(x + 1\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(x, \frac{1}{x + 1}, \frac{-\mathsf{fma}\left(x, x, -1\right)}{\left(x - 1\right) \cdot \left(x - 1\right)}\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 2019151 +o rules:numerics
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))