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

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

\end{array}
double f(double x) {
        double r195378 = x;
        double r195379 = 1.0;
        double r195380 = r195378 + r195379;
        double r195381 = r195378 / r195380;
        double r195382 = r195378 - r195379;
        double r195383 = r195380 / r195382;
        double r195384 = r195381 - r195383;
        return r195384;
}

double f(double x) {
        double r195385 = x;
        double r195386 = -7667.570022826935;
        bool r195387 = r195385 <= r195386;
        double r195388 = 6357.975922070107;
        bool r195389 = r195385 <= r195388;
        double r195390 = !r195389;
        bool r195391 = r195387 || r195390;
        double r195392 = 1.0;
        double r195393 = r195392 / r195385;
        double r195394 = r195393 / r195385;
        double r195395 = -r195394;
        double r195396 = 3.0;
        double r195397 = r195396 / r195385;
        double r195398 = 3.0;
        double r195399 = pow(r195385, r195398);
        double r195400 = r195396 / r195399;
        double r195401 = r195397 + r195400;
        double r195402 = r195395 - r195401;
        double r195403 = pow(r195392, r195398);
        double r195404 = r195399 + r195403;
        double r195405 = r195385 / r195404;
        double r195406 = r195392 - r195385;
        double r195407 = r195392 * r195406;
        double r195408 = r195385 * r195385;
        double r195409 = r195407 + r195408;
        double r195410 = r195385 + r195392;
        double r195411 = r195385 - r195392;
        double r195412 = cbrt(r195411);
        double r195413 = r195410 / r195412;
        double r195414 = r195413 / r195412;
        double r195415 = 1.0;
        double r195416 = r195415 / r195412;
        double r195417 = cbrt(r195415);
        double r195418 = r195416 / r195417;
        double r195419 = r195414 * r195418;
        double r195420 = -r195419;
        double r195421 = fma(r195405, r195409, r195420);
        double r195422 = -r195414;
        double r195423 = fma(r195422, r195418, r195419);
        double r195424 = r195421 + r195423;
        double r195425 = r195391 ? r195402 : r195424;
        return r195425;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -7667.570022826935 or 6357.975922070107 < x

    1. Initial program 59.3

      \[\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.0

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

    if -7667.570022826935 < x < 6357.975922070107

    1. Initial program 0.1

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

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{\frac{x + 1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity0.1

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

      \[\leadsto \frac{x}{x + 1} - \frac{\frac{x + 1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}}}{\color{blue}{\sqrt[3]{1} \cdot \sqrt[3]{x - 1}}}\]
    8. Applied *-un-lft-identity0.1

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

      \[\leadsto \frac{x}{x + 1} - \frac{\color{blue}{\frac{1}{\sqrt[3]{x - 1}} \cdot \frac{x + 1}{\sqrt[3]{x - 1}}}}{\sqrt[3]{1} \cdot \sqrt[3]{x - 1}}\]
    10. Applied times-frac0.1

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{\frac{1}{\sqrt[3]{x - 1}}}{\sqrt[3]{1}} \cdot \frac{\frac{x + 1}{\sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}}\]
    11. Applied flip3-+0.1

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

      \[\leadsto \color{blue}{\frac{x}{{x}^{3} + {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right)} - \frac{\frac{1}{\sqrt[3]{x - 1}}}{\sqrt[3]{1}} \cdot \frac{\frac{x + 1}{\sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}\]
    13. Applied prod-diff0.1

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

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

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

Reproduce

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