Average Error: 29.5 → 0.1
Time: 5.5m
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -10413.947063155647:\\ \;\;\;\;\frac{-1}{x \cdot x} + \left(\frac{-3}{x} + \frac{-3}{\left(x \cdot x\right) \cdot x}\right)\\ \mathbf{elif}\;x \le 17807.632519573774:\\ \;\;\;\;(\left(\frac{x}{1 + {x}^{3}}\right) \cdot \left(x \cdot x + \left(1 - x\right)\right) + \left(\frac{1 + x}{{x}^{3} - 1} \cdot \left(-\left(\left(1 + x\right) + x \cdot x\right)\right)\right))_*\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{x \cdot x} + \left(\frac{-3}{x} + \frac{-3}{\left(x \cdot x\right) \cdot x}\right)\\ \end{array}\]
double f(double x) {
        double r31021527 = x;
        double r31021528 = 1.0;
        double r31021529 = r31021527 + r31021528;
        double r31021530 = r31021527 / r31021529;
        double r31021531 = r31021527 - r31021528;
        double r31021532 = r31021529 / r31021531;
        double r31021533 = r31021530 - r31021532;
        return r31021533;
}

double f(double x) {
        double r31021534 = x;
        double r31021535 = -10413.947063155647;
        bool r31021536 = r31021534 <= r31021535;
        double r31021537 = -1.0;
        double r31021538 = r31021534 * r31021534;
        double r31021539 = r31021537 / r31021538;
        double r31021540 = -3.0;
        double r31021541 = r31021540 / r31021534;
        double r31021542 = r31021538 * r31021534;
        double r31021543 = r31021540 / r31021542;
        double r31021544 = r31021541 + r31021543;
        double r31021545 = r31021539 + r31021544;
        double r31021546 = 17807.632519573774;
        bool r31021547 = r31021534 <= r31021546;
        double r31021548 = 1.0;
        double r31021549 = 3.0;
        double r31021550 = pow(r31021534, r31021549);
        double r31021551 = r31021548 + r31021550;
        double r31021552 = r31021534 / r31021551;
        double r31021553 = r31021548 - r31021534;
        double r31021554 = r31021538 + r31021553;
        double r31021555 = r31021548 + r31021534;
        double r31021556 = r31021550 - r31021548;
        double r31021557 = r31021555 / r31021556;
        double r31021558 = r31021555 + r31021538;
        double r31021559 = -r31021558;
        double r31021560 = r31021557 * r31021559;
        double r31021561 = fma(r31021552, r31021554, r31021560);
        double r31021562 = r31021547 ? r31021561 : r31021545;
        double r31021563 = r31021536 ? r31021545 : r31021562;
        return r31021563;
}

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

\mathbf{elif}\;x \le 17807.632519573774:\\
\;\;\;\;(\left(\frac{x}{1 + {x}^{3}}\right) \cdot \left(x \cdot x + \left(1 - x\right)\right) + \left(\frac{1 + x}{{x}^{3} - 1} \cdot \left(-\left(\left(1 + x\right) + x \cdot x\right)\right)\right))_*\\

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

\end{array}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -10413.947063155647 or 17807.632519573774 < x

    1. Initial program 59.4

      \[\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))_*}\]
    4. Using strategy rm
    5. Applied fma-udef0.3

      \[\leadsto \color{blue}{3 \cdot \left(\frac{-1}{x} + \frac{\frac{-1}{x}}{x \cdot x}\right) + \frac{-1}{x \cdot x}}\]
    6. Taylor expanded around -inf 0.3

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

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

    if -10413.947063155647 < x < 17807.632519573774

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \frac{x + 1}{\color{blue}{\frac{{x}^{3} - {1}^{3}}{x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)}}}\]
    4. Applied associate-/r/0.1

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{x + 1}{{x}^{3} - {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)\right)}\]
    5. Applied flip3-+0.1

      \[\leadsto \frac{x}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - \frac{x + 1}{{x}^{3} - {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)\right)\]
    6. Applied associate-/r/0.1

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

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

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

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

Reproduce

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