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

\mathbf{elif}\;x \le 8600.582868753155707963742315769195556641:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \frac{\sqrt[3]{x}}{x + 1}, \frac{-1}{\frac{x - 1}{x + 1}}\right)\\

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

\end{array}
double f(double x) {
        double r11474677 = x;
        double r11474678 = 1.0;
        double r11474679 = r11474677 + r11474678;
        double r11474680 = r11474677 / r11474679;
        double r11474681 = r11474677 - r11474678;
        double r11474682 = r11474679 / r11474681;
        double r11474683 = r11474680 - r11474682;
        return r11474683;
}

double f(double x) {
        double r11474684 = x;
        double r11474685 = -8089.074957308727;
        bool r11474686 = r11474684 <= r11474685;
        double r11474687 = 3.0;
        double r11474688 = r11474687 / r11474684;
        double r11474689 = 1.0;
        double r11474690 = r11474684 * r11474684;
        double r11474691 = r11474689 / r11474690;
        double r11474692 = 1.0;
        double r11474693 = r11474692 / r11474690;
        double r11474694 = r11474688 + r11474693;
        double r11474695 = fma(r11474688, r11474691, r11474694);
        double r11474696 = -r11474695;
        double r11474697 = 8600.582868753156;
        bool r11474698 = r11474684 <= r11474697;
        double r11474699 = cbrt(r11474684);
        double r11474700 = r11474699 * r11474699;
        double r11474701 = r11474684 + r11474692;
        double r11474702 = r11474699 / r11474701;
        double r11474703 = -1.0;
        double r11474704 = r11474684 - r11474692;
        double r11474705 = r11474704 / r11474701;
        double r11474706 = r11474703 / r11474705;
        double r11474707 = fma(r11474700, r11474702, r11474706);
        double r11474708 = r11474698 ? r11474707 : r11474696;
        double r11474709 = r11474686 ? r11474696 : r11474708;
        return r11474709;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -8089.074957308727 or 8600.582868753156 < 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(1 \cdot \frac{1}{{x}^{2}} + 3 \cdot \frac{1}{x}\right)\right)}\]
    3. Simplified0.0

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

    if -8089.074957308727 < x < 8600.582868753156

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{1}{\frac{x - 1}{x + 1}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.1

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

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

      \[\leadsto \color{blue}{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1} \cdot \frac{\sqrt[3]{x}}{x + 1}} - \frac{1}{\frac{x - 1}{x + 1}}\]
    8. Applied fma-neg0.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1}, \frac{\sqrt[3]{x}}{x + 1}, -\frac{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 -8089.074957308726880000904202461242675781:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 8600.582868753155707963742315769195556641:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \frac{\sqrt[3]{x}}{x + 1}, \frac{-1}{\frac{x - 1}{x + 1}}\right)\\ \mathbf{else}:\\ \;\;\;\;-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \frac{3}{x} + \frac{1}{x \cdot x}\right)\\ \end{array}\]

Reproduce

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