Average Error: 29.6 → 0.1
Time: 26.8s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -12354.188123908416:\\ \;\;\;\;\left(\frac{-3}{x} - \frac{1}{x \cdot x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\ \mathbf{elif}\;x \le 11913.338256318099:\\ \;\;\;\;\mathsf{fma}\left(x, \frac{1}{1 + x}, \frac{-\left(1 + x\right)}{x - 1}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{-3}{x} - \frac{1}{x \cdot x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -12354.188123908416:\\
\;\;\;\;\left(\frac{-3}{x} - \frac{1}{x \cdot x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\

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

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

\end{array}
double f(double x) {
        double r5531424 = x;
        double r5531425 = 1.0;
        double r5531426 = r5531424 + r5531425;
        double r5531427 = r5531424 / r5531426;
        double r5531428 = r5531424 - r5531425;
        double r5531429 = r5531426 / r5531428;
        double r5531430 = r5531427 - r5531429;
        return r5531430;
}

double f(double x) {
        double r5531431 = x;
        double r5531432 = -12354.188123908416;
        bool r5531433 = r5531431 <= r5531432;
        double r5531434 = -3.0;
        double r5531435 = r5531434 / r5531431;
        double r5531436 = 1.0;
        double r5531437 = r5531431 * r5531431;
        double r5531438 = r5531436 / r5531437;
        double r5531439 = r5531435 - r5531438;
        double r5531440 = r5531435 / r5531437;
        double r5531441 = r5531439 + r5531440;
        double r5531442 = 11913.338256318099;
        bool r5531443 = r5531431 <= r5531442;
        double r5531444 = r5531436 + r5531431;
        double r5531445 = r5531436 / r5531444;
        double r5531446 = -r5531444;
        double r5531447 = r5531431 - r5531436;
        double r5531448 = r5531446 / r5531447;
        double r5531449 = fma(r5531431, r5531445, r5531448);
        double r5531450 = r5531443 ? r5531449 : r5531441;
        double r5531451 = r5531433 ? r5531441 : r5531450;
        return r5531451;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -12354.188123908416 or 11913.338256318099 < x

    1. Initial program 59.2

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\log \left(e^{\frac{x + 1}{x - 1}}\right)}\]
    4. Applied add-log-exp59.2

      \[\leadsto \color{blue}{\log \left(e^{\frac{x}{x + 1}}\right)} - \log \left(e^{\frac{x + 1}{x - 1}}\right)\]
    5. Applied diff-log59.2

      \[\leadsto \color{blue}{\log \left(\frac{e^{\frac{x}{x + 1}}}{e^{\frac{x + 1}{x - 1}}}\right)}\]
    6. Simplified59.2

      \[\leadsto \log \color{blue}{\left(e^{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\right)}\]
    7. Using strategy rm
    8. Applied div-inv59.4

      \[\leadsto \log \left(e^{\color{blue}{x \cdot \frac{1}{x + 1}} - \frac{x + 1}{x - 1}}\right)\]
    9. Applied fma-neg59.4

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

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

    if -12354.188123908416 < x < 11913.338256318099

    1. Initial program 0.1

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

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

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

Reproduce

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