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

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

\end{array}
double f(double x) {
        double r126385 = x;
        double r126386 = 1.0;
        double r126387 = r126385 + r126386;
        double r126388 = r126385 / r126387;
        double r126389 = r126385 - r126386;
        double r126390 = r126387 / r126389;
        double r126391 = r126388 - r126390;
        return r126391;
}

double f(double x) {
        double r126392 = x;
        double r126393 = -12923.888472784707;
        bool r126394 = r126392 <= r126393;
        double r126395 = 11974.485141399613;
        bool r126396 = r126392 <= r126395;
        double r126397 = !r126396;
        bool r126398 = r126394 || r126397;
        double r126399 = 1.0;
        double r126400 = -r126399;
        double r126401 = 2.0;
        double r126402 = pow(r126392, r126401);
        double r126403 = r126400 / r126402;
        double r126404 = 3.0;
        double r126405 = 1.0;
        double r126406 = 3.0;
        double r126407 = pow(r126392, r126406);
        double r126408 = r126405 / r126407;
        double r126409 = r126404 / r126392;
        double r126410 = fma(r126404, r126408, r126409);
        double r126411 = r126403 - r126410;
        double r126412 = r126392 + r126399;
        double r126413 = r126392 / r126412;
        double r126414 = pow(r126413, r126406);
        double r126415 = cbrt(r126414);
        double r126416 = r126392 - r126399;
        double r126417 = r126412 / r126416;
        double r126418 = r126415 - r126417;
        double r126419 = r126398 ? r126411 : r126418;
        return r126419;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -12923.888472784707 or 11974.485141399613 < x

    1. Initial program 59.2

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. 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)}\]
    3. Simplified0.3

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

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

    if -12923.888472784707 < x < 11974.485141399613

    1. Initial program 0.1

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

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

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

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

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

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

Reproduce

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