Average Error: 14.3 → 0.1
Time: 16.5s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -247.3021395141843186138430610299110412598 \lor \neg \left(x \le 202.7900042524518653408449608832597732544\right):\\ \;\;\;\;-\left(\frac{\frac{2}{x}}{x} + \left(\frac{2}{{x}^{4}} + \frac{2}{{x}^{6}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x - 1}\right)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -247.3021395141843186138430610299110412598 \lor \neg \left(x \le 202.7900042524518653408449608832597732544\right):\\
\;\;\;\;-\left(\frac{\frac{2}{x}}{x} + \left(\frac{2}{{x}^{4}} + \frac{2}{{x}^{6}}\right)\right)\\

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

\end{array}
double f(double x) {
        double r128592 = 1.0;
        double r128593 = x;
        double r128594 = r128593 + r128592;
        double r128595 = r128592 / r128594;
        double r128596 = r128593 - r128592;
        double r128597 = r128592 / r128596;
        double r128598 = r128595 - r128597;
        return r128598;
}

double f(double x) {
        double r128599 = x;
        double r128600 = -247.30213951418432;
        bool r128601 = r128599 <= r128600;
        double r128602 = 202.79000425245187;
        bool r128603 = r128599 <= r128602;
        double r128604 = !r128603;
        bool r128605 = r128601 || r128604;
        double r128606 = 2.0;
        double r128607 = r128606 / r128599;
        double r128608 = r128607 / r128599;
        double r128609 = 4.0;
        double r128610 = pow(r128599, r128609);
        double r128611 = r128606 / r128610;
        double r128612 = 6.0;
        double r128613 = pow(r128599, r128612);
        double r128614 = r128606 / r128613;
        double r128615 = r128611 + r128614;
        double r128616 = r128608 + r128615;
        double r128617 = -r128616;
        double r128618 = 1.0;
        double r128619 = 3.0;
        double r128620 = pow(r128599, r128619);
        double r128621 = pow(r128618, r128619);
        double r128622 = r128620 + r128621;
        double r128623 = r128618 / r128622;
        double r128624 = r128599 * r128599;
        double r128625 = r128618 * r128618;
        double r128626 = r128599 * r128618;
        double r128627 = r128625 - r128626;
        double r128628 = r128624 + r128627;
        double r128629 = r128599 - r128618;
        double r128630 = r128618 / r128629;
        double r128631 = -r128630;
        double r128632 = fma(r128623, r128628, r128631);
        double r128633 = r128605 ? r128617 : r128632;
        return r128633;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -247.30213951418432 or 202.79000425245187 < x

    1. Initial program 29.1

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

      \[\leadsto \frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - \frac{1}{x - 1}\]
    4. Applied associate-/r/61.2

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

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

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

      \[\leadsto \color{blue}{-\left(\frac{2}{x \cdot x} + \left(\frac{2}{{x}^{4}} + \frac{2}{{x}^{6}}\right)\right)}\]
    8. Using strategy rm
    9. Applied associate-/r*0.1

      \[\leadsto -\left(\color{blue}{\frac{\frac{2}{x}}{x}} + \left(\frac{2}{{x}^{4}} + \frac{2}{{x}^{6}}\right)\right)\]

    if -247.30213951418432 < x < 202.79000425245187

    1. Initial program 0.0

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

      \[\leadsto \frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - \frac{1}{x - 1}\]
    4. Applied associate-/r/0.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -247.3021395141843186138430610299110412598 \lor \neg \left(x \le 202.7900042524518653408449608832597732544\right):\\ \;\;\;\;-\left(\frac{\frac{2}{x}}{x} + \left(\frac{2}{{x}^{4}} + \frac{2}{{x}^{6}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x - 1}\right)\\ \end{array}\]

Reproduce

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