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

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

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

\end{array}
double f(double x) {
        double r4202650 = x;
        double r4202651 = 1.0;
        double r4202652 = r4202650 + r4202651;
        double r4202653 = r4202650 / r4202652;
        double r4202654 = r4202650 - r4202651;
        double r4202655 = r4202652 / r4202654;
        double r4202656 = r4202653 - r4202655;
        return r4202656;
}

double f(double x) {
        double r4202657 = x;
        double r4202658 = -12183.867794727486;
        bool r4202659 = r4202657 <= r4202658;
        double r4202660 = 1.0;
        double r4202661 = r4202657 * r4202657;
        double r4202662 = r4202660 / r4202661;
        double r4202663 = r4202662 / r4202657;
        double r4202664 = -3.0;
        double r4202665 = r4202664 / r4202657;
        double r4202666 = r4202665 - r4202662;
        double r4202667 = fma(r4202663, r4202664, r4202666);
        double r4202668 = 10675.910301293761;
        bool r4202669 = r4202657 <= r4202668;
        double r4202670 = -1.0;
        double r4202671 = fma(r4202657, r4202657, r4202670);
        double r4202672 = r4202657 / r4202671;
        double r4202673 = r4202657 - r4202660;
        double r4202674 = r4202670 - r4202657;
        double r4202675 = r4202674 / r4202673;
        double r4202676 = fma(r4202672, r4202673, r4202675);
        double r4202677 = r4202676 * r4202676;
        double r4202678 = r4202676 * r4202677;
        double r4202679 = cbrt(r4202678);
        double r4202680 = r4202669 ? r4202679 : r4202667;
        double r4202681 = r4202659 ? r4202667 : r4202680;
        return r4202681;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -12183.867794727486 or 10675.910301293761 < x

    1. Initial program 59.2

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

      \[\leadsto \frac{x}{\color{blue}{\frac{x \cdot x - 1 \cdot 1}{x - 1}}} - \frac{x + 1}{x - 1}\]
    4. Applied associate-/r/60.4

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

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

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

    if -12183.867794727486 < x < 10675.910301293761

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{\color{blue}{\frac{x \cdot x - 1 \cdot 1}{x - 1}}} - \frac{x + 1}{x - 1}\]
    4. Applied associate-/r/0.1

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{x \cdot x - 1 \cdot 1}, x - 1, -\frac{x + 1}{x - 1}\right)}\]
    6. Using strategy rm
    7. Applied add-cbrt-cube0.1

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

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

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

Reproduce

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