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

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

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

\end{array}
double f(double x) {
        double r1549689 = x;
        double r1549690 = 1.0;
        double r1549691 = r1549689 + r1549690;
        double r1549692 = r1549689 / r1549691;
        double r1549693 = r1549689 - r1549690;
        double r1549694 = r1549691 / r1549693;
        double r1549695 = r1549692 - r1549694;
        return r1549695;
}

double f(double x) {
        double r1549696 = x;
        double r1549697 = -10835.479300405816;
        bool r1549698 = r1549696 <= r1549697;
        double r1549699 = -3.0;
        double r1549700 = r1549699 / r1549696;
        double r1549701 = r1549696 * r1549696;
        double r1549702 = r1549701 * r1549696;
        double r1549703 = r1549699 / r1549702;
        double r1549704 = -1.0;
        double r1549705 = r1549704 / r1549701;
        double r1549706 = r1549703 + r1549705;
        double r1549707 = r1549700 + r1549706;
        double r1549708 = 13418.220827984447;
        bool r1549709 = r1549696 <= r1549708;
        double r1549710 = 1.0;
        double r1549711 = r1549696 - r1549710;
        double r1549712 = r1549704 / r1549711;
        double r1549713 = r1549696 + r1549710;
        double r1549714 = r1549713 / r1549711;
        double r1549715 = fma(r1549712, r1549713, r1549714);
        double r1549716 = r1549696 / r1549713;
        double r1549717 = r1549716 - r1549714;
        double r1549718 = r1549715 + r1549717;
        double r1549719 = r1549709 ? r1549718 : r1549707;
        double r1549720 = r1549698 ? r1549707 : r1549719;
        return r1549720;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -10835.479300405816 or 13418.220827984447 < x

    1. Initial program 59.2

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

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

    if -10835.479300405816 < x < 13418.220827984447

    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 add-sqr-sqrt30.5

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

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

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

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

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

Reproduce

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