Average Error: 30.0 → 0.1
Time: 6.2s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -7685.4142355256245 \lor \neg \left(x \le 7872.3195656579555\right):\\ \;\;\;\;\frac{-1}{{x}^{2}} - \mathsf{fma}\left(3, \frac{1}{{x}^{3}}, \frac{3}{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}, \sqrt[3]{\frac{x}{x + 1}}, -\frac{x + 1}{x - 1}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -7685.4142355256245 \lor \neg \left(x \le 7872.3195656579555\right):\\
\;\;\;\;\frac{-1}{{x}^{2}} - \mathsf{fma}\left(3, \frac{1}{{x}^{3}}, \frac{3}{x}\right)\\

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

\end{array}
double f(double x) {
        double r148625 = x;
        double r148626 = 1.0;
        double r148627 = r148625 + r148626;
        double r148628 = r148625 / r148627;
        double r148629 = r148625 - r148626;
        double r148630 = r148627 / r148629;
        double r148631 = r148628 - r148630;
        return r148631;
}

double f(double x) {
        double r148632 = x;
        double r148633 = -7685.4142355256245;
        bool r148634 = r148632 <= r148633;
        double r148635 = 7872.3195656579555;
        bool r148636 = r148632 <= r148635;
        double r148637 = !r148636;
        bool r148638 = r148634 || r148637;
        double r148639 = 1.0;
        double r148640 = -r148639;
        double r148641 = 2.0;
        double r148642 = pow(r148632, r148641);
        double r148643 = r148640 / r148642;
        double r148644 = 3.0;
        double r148645 = 1.0;
        double r148646 = 3.0;
        double r148647 = pow(r148632, r148646);
        double r148648 = r148645 / r148647;
        double r148649 = r148644 / r148632;
        double r148650 = fma(r148644, r148648, r148649);
        double r148651 = r148643 - r148650;
        double r148652 = r148632 + r148639;
        double r148653 = r148632 / r148652;
        double r148654 = cbrt(r148653);
        double r148655 = r148654 * r148654;
        double r148656 = r148632 - r148639;
        double r148657 = r148652 / r148656;
        double r148658 = -r148657;
        double r148659 = fma(r148655, r148654, r148658);
        double r148660 = r148638 ? r148651 : r148659;
        return r148660;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -7685.4142355256245 or 7872.3195656579555 < x

    1. Initial program 59.0

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt59.1

      \[\leadsto \color{blue}{\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}\right) \cdot \sqrt[3]{\frac{x}{x + 1}}} - \frac{x + 1}{x - 1}\]
    4. Applied fma-neg59.1

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

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

      \[\leadsto \color{blue}{\frac{-1}{{x}^{2}} - \mathsf{fma}\left(3, \frac{1}{x}, 3 \cdot \frac{1}{{x}^{3}}\right)}\]
    7. Taylor expanded around 0 0.3

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

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

    if -7685.4142355256245 < x < 7872.3195656579555

    1. Initial program 0.1

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.1

      \[\leadsto \color{blue}{\left(\sqrt[3]{\frac{x}{x + 1}} \cdot \sqrt[3]{\frac{x}{x + 1}}\right) \cdot \sqrt[3]{\frac{x}{x + 1}}} - \frac{x + 1}{x - 1}\]
    4. Applied fma-neg0.1

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

Reproduce

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