Average Error: 29.0 → 0.1
Time: 17.5s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -11192.06208307448832783848047256469726562 \lor \neg \left(x \le 6174.270166505639281240291893482208251953\right):\\ \;\;\;\;\frac{-1}{x \cdot x} - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \frac{1}{x + 1} - \frac{\frac{x + 1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}\right) + \frac{1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}} \cdot \left(\left(-\frac{x + 1}{\sqrt[3]{x - 1}}\right) + \frac{x + 1}{\sqrt[3]{x - 1}}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -11192.06208307448832783848047256469726562 \lor \neg \left(x \le 6174.270166505639281240291893482208251953\right):\\
\;\;\;\;\frac{-1}{x \cdot x} - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\

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

\end{array}
double f(double x) {
        double r96482 = x;
        double r96483 = 1.0;
        double r96484 = r96482 + r96483;
        double r96485 = r96482 / r96484;
        double r96486 = r96482 - r96483;
        double r96487 = r96484 / r96486;
        double r96488 = r96485 - r96487;
        return r96488;
}

double f(double x) {
        double r96489 = x;
        double r96490 = -11192.062083074488;
        bool r96491 = r96489 <= r96490;
        double r96492 = 6174.270166505639;
        bool r96493 = r96489 <= r96492;
        double r96494 = !r96493;
        bool r96495 = r96491 || r96494;
        double r96496 = 1.0;
        double r96497 = -r96496;
        double r96498 = r96489 * r96489;
        double r96499 = r96497 / r96498;
        double r96500 = 3.0;
        double r96501 = r96500 / r96489;
        double r96502 = 3.0;
        double r96503 = pow(r96489, r96502);
        double r96504 = r96500 / r96503;
        double r96505 = r96501 + r96504;
        double r96506 = r96499 - r96505;
        double r96507 = 1.0;
        double r96508 = r96489 + r96496;
        double r96509 = r96507 / r96508;
        double r96510 = r96489 * r96509;
        double r96511 = r96489 - r96496;
        double r96512 = cbrt(r96511);
        double r96513 = r96512 * r96512;
        double r96514 = r96508 / r96513;
        double r96515 = r96514 / r96512;
        double r96516 = r96510 - r96515;
        double r96517 = r96507 / r96513;
        double r96518 = r96508 / r96512;
        double r96519 = -r96518;
        double r96520 = r96519 + r96518;
        double r96521 = r96517 * r96520;
        double r96522 = r96516 + r96521;
        double r96523 = r96495 ? r96506 : r96522;
        return r96523;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -11192.062083074488 or 6174.270166505639 < x

    1. Initial program 59.4

      \[\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}{\frac{-1}{x \cdot x} - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)}\]

    if -11192.062083074488 < x < 6174.270166505639

    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 *-un-lft-identity0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}} \cdot \frac{x + 1}{\sqrt[3]{x - 1}}}\]
    6. Applied div-inv0.1

      \[\leadsto \color{blue}{x \cdot \frac{1}{x + 1}} - \frac{1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}} \cdot \frac{x + 1}{\sqrt[3]{x - 1}}\]
    7. Applied prod-diff0.1

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

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

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

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

Reproduce

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