Average Error: 29.7 → 0.3
Time: 5.5m
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -139705646.1415683:\\ \;\;\;\;\frac{1}{x \cdot x} + \frac{-3}{x}\\ \mathbf{elif}\;x \le 18902.749445282407:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{x}{\mathsf{fma}\left(x, \left(x \cdot x\right), 1\right)}\right), \left(x \cdot x + \left(1 - x\right)\right), \left(-\frac{1 + x}{x - 1}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(3, \left(\frac{\frac{-1}{x}}{x \cdot x} + \frac{-1}{x}\right), \left(\frac{-1}{x \cdot x}\right)\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -139705646.1415683:\\
\;\;\;\;\frac{1}{x \cdot x} + \frac{-3}{x}\\

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

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

\end{array}
double f(double x) {
        double r18523600 = x;
        double r18523601 = 1.0;
        double r18523602 = r18523600 + r18523601;
        double r18523603 = r18523600 / r18523602;
        double r18523604 = r18523600 - r18523601;
        double r18523605 = r18523602 / r18523604;
        double r18523606 = r18523603 - r18523605;
        return r18523606;
}

double f(double x) {
        double r18523607 = x;
        double r18523608 = -139705646.1415683;
        bool r18523609 = r18523607 <= r18523608;
        double r18523610 = 1.0;
        double r18523611 = r18523607 * r18523607;
        double r18523612 = r18523610 / r18523611;
        double r18523613 = -3.0;
        double r18523614 = r18523613 / r18523607;
        double r18523615 = r18523612 + r18523614;
        double r18523616 = 18902.749445282407;
        bool r18523617 = r18523607 <= r18523616;
        double r18523618 = fma(r18523607, r18523611, r18523610);
        double r18523619 = r18523607 / r18523618;
        double r18523620 = r18523610 - r18523607;
        double r18523621 = r18523611 + r18523620;
        double r18523622 = r18523610 + r18523607;
        double r18523623 = r18523607 - r18523610;
        double r18523624 = r18523622 / r18523623;
        double r18523625 = -r18523624;
        double r18523626 = fma(r18523619, r18523621, r18523625);
        double r18523627 = 3.0;
        double r18523628 = -1.0;
        double r18523629 = r18523628 / r18523607;
        double r18523630 = r18523629 / r18523611;
        double r18523631 = r18523630 + r18523629;
        double r18523632 = r18523628 / r18523611;
        double r18523633 = fma(r18523627, r18523631, r18523632);
        double r18523634 = r18523617 ? r18523626 : r18523633;
        double r18523635 = r18523609 ? r18523615 : r18523634;
        return r18523635;
}

Error

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if x < -139705646.1415683

    1. Initial program 59.8

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied div-inv59.8

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(x + 1\right) \cdot \frac{1}{x - 1}}\]
    4. Applied add-cube-cbrt60.8

      \[\leadsto \frac{x}{\color{blue}{\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot \sqrt[3]{x + 1}}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    5. Applied *-un-lft-identity60.8

      \[\leadsto \frac{\color{blue}{1 \cdot x}}{\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot \sqrt[3]{x + 1}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    6. Applied times-frac60.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right), \left(\frac{x}{\sqrt[3]{x + 1}}\right), \left(-\frac{1}{x - 1} \cdot \left(x + 1\right)\right)\right) + \mathsf{fma}\left(\left(-\frac{1}{x - 1}\right), \left(x + 1\right), \left(\frac{1}{x - 1} \cdot \left(x + 1\right)\right)\right)}\]
    8. Simplified60.9

      \[\leadsto \mathsf{fma}\left(\left(\frac{1}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right), \left(\frac{x}{\sqrt[3]{x + 1}}\right), \left(-\frac{1}{x - 1} \cdot \left(x + 1\right)\right)\right) + \color{blue}{0}\]
    9. Using strategy rm
    10. Applied add-cbrt-cube60.9

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

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

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

    if -139705646.1415683 < x < 18902.749445282407

    1. Initial program 0.2

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

      \[\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 - 1}\]
    4. Applied associate-/r/0.2

      \[\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 - 1}\]
    5. Applied fma-neg0.2

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

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

    if 18902.749445282407 < x

    1. Initial program 59.2

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

      \[\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 - 1}\]
    4. Applied associate-/r/60.7

      \[\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 - 1}\]
    5. Applied fma-neg60.7

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

      \[\leadsto \mathsf{fma}\left(\color{blue}{\left(\frac{x}{\mathsf{fma}\left(x, \left(x \cdot x\right), 1\right)}\right)}, \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right), \left(-\frac{x + 1}{x - 1}\right)\right)\]
    7. 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)}\]
    8. Simplified0.3

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

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

Reproduce

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