Average Error: 29.5 → 0.5
Time: 17.5s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.311384526318253:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \mathbf{elif}\;x \le 1.020834055947729:\\ \;\;\;\;\frac{x}{1 + x} - \left(-\mathsf{fma}\left(2, x \cdot x + x, 1\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -1.311384526318253:\\
\;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\

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

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

\end{array}
double f(double x) {
        double r4728417 = x;
        double r4728418 = 1.0;
        double r4728419 = r4728417 + r4728418;
        double r4728420 = r4728417 / r4728419;
        double r4728421 = r4728417 - r4728418;
        double r4728422 = r4728419 / r4728421;
        double r4728423 = r4728420 - r4728422;
        return r4728423;
}

double f(double x) {
        double r4728424 = x;
        double r4728425 = -1.311384526318253;
        bool r4728426 = r4728424 <= r4728425;
        double r4728427 = 3.0;
        double r4728428 = r4728427 / r4728424;
        double r4728429 = 1.0;
        double r4728430 = r4728429 / r4728424;
        double r4728431 = r4728430 / r4728424;
        double r4728432 = fma(r4728428, r4728431, r4728431);
        double r4728433 = r4728432 + r4728428;
        double r4728434 = -r4728433;
        double r4728435 = 1.020834055947729;
        bool r4728436 = r4728424 <= r4728435;
        double r4728437 = r4728429 + r4728424;
        double r4728438 = r4728424 / r4728437;
        double r4728439 = 2.0;
        double r4728440 = r4728424 * r4728424;
        double r4728441 = r4728440 + r4728424;
        double r4728442 = fma(r4728439, r4728441, r4728429);
        double r4728443 = -r4728442;
        double r4728444 = r4728438 - r4728443;
        double r4728445 = r4728436 ? r4728444 : r4728434;
        double r4728446 = r4728426 ? r4728434 : r4728445;
        return r4728446;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -1.311384526318253 or 1.020834055947729 < x

    1. Initial program 58.6

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

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

      \[\leadsto \color{blue}{-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \frac{1}{x \cdot x} + \frac{3}{x}\right)}\]
    4. Taylor expanded around 0 0.7

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

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

    if -1.311384526318253 < x < 1.020834055947729

    1. Initial program 0.0

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Taylor expanded around 0 0.6

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

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

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

Reproduce

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