Average Error: 29.2 → 0.2
Time: 18.9s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.3365987847882014:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{-3}{\left(x \cdot x\right) \cdot x}\\ \mathbf{elif}\;x \le 0.9979273725592545:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(\left(\frac{1}{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right), \left(\frac{x}{\sqrt[3]{1 + x}}\right), \left(-\frac{1 + x}{x - 1}\right)\right)} \cdot \sqrt{\mathsf{fma}\left(\left(\frac{1}{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right), \left(\frac{x}{\sqrt[3]{1 + x}}\right), \left(-\frac{1 + x}{x - 1}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{-3}{\left(x \cdot x\right) \cdot x}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -0.3365987847882014:\\
\;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{-3}{\left(x \cdot x\right) \cdot x}\\

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

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

\end{array}
double f(double x) {
        double r2781624 = x;
        double r2781625 = 1.0;
        double r2781626 = r2781624 + r2781625;
        double r2781627 = r2781624 / r2781626;
        double r2781628 = r2781624 - r2781625;
        double r2781629 = r2781626 / r2781628;
        double r2781630 = r2781627 - r2781629;
        return r2781630;
}

double f(double x) {
        double r2781631 = x;
        double r2781632 = -0.3365987847882014;
        bool r2781633 = r2781631 <= r2781632;
        double r2781634 = -1.0;
        double r2781635 = r2781631 * r2781631;
        double r2781636 = r2781634 / r2781635;
        double r2781637 = -3.0;
        double r2781638 = r2781637 / r2781631;
        double r2781639 = r2781636 + r2781638;
        double r2781640 = r2781635 * r2781631;
        double r2781641 = r2781637 / r2781640;
        double r2781642 = r2781639 + r2781641;
        double r2781643 = 0.9979273725592545;
        bool r2781644 = r2781631 <= r2781643;
        double r2781645 = 1.0;
        double r2781646 = r2781645 + r2781631;
        double r2781647 = cbrt(r2781646);
        double r2781648 = r2781647 * r2781647;
        double r2781649 = r2781645 / r2781648;
        double r2781650 = r2781631 / r2781647;
        double r2781651 = r2781631 - r2781645;
        double r2781652 = r2781646 / r2781651;
        double r2781653 = -r2781652;
        double r2781654 = fma(r2781649, r2781650, r2781653);
        double r2781655 = sqrt(r2781654);
        double r2781656 = r2781655 * r2781655;
        double r2781657 = r2781644 ? r2781656 : r2781642;
        double r2781658 = r2781633 ? r2781642 : r2781657;
        return r2781658;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -0.3365987847882014 or 0.9979273725592545 < x

    1. Initial program 58.7

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Taylor expanded around -inf 0.7

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

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

    if -0.3365987847882014 < x < 0.9979273725592545

    1. Initial program 0.0

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

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

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}} \cdot \frac{x}{\sqrt[3]{x + 1}}} - \frac{x + 1}{x - 1}\]
    6. Applied fma-neg0.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{x + 1}{x - 1}\right)\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt0.0

      \[\leadsto \color{blue}{\sqrt{\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{x + 1}{x - 1}\right)\right)} \cdot \sqrt{\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{x + 1}{x - 1}\right)\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

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

Reproduce

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