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

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

\end{array}
double f(double x) {
        double r78408 = x;
        double r78409 = 1.0;
        double r78410 = r78408 + r78409;
        double r78411 = r78408 / r78410;
        double r78412 = r78408 - r78409;
        double r78413 = r78410 / r78412;
        double r78414 = r78411 - r78413;
        return r78414;
}

double f(double x) {
        double r78415 = x;
        double r78416 = -7087.2986999786435;
        bool r78417 = r78415 <= r78416;
        double r78418 = 7229.990696850788;
        bool r78419 = r78415 <= r78418;
        double r78420 = !r78419;
        bool r78421 = r78417 || r78420;
        double r78422 = 3.0;
        double r78423 = r78422 / r78415;
        double r78424 = 3.0;
        double r78425 = pow(r78415, r78424);
        double r78426 = r78422 / r78425;
        double r78427 = 1.0;
        double r78428 = r78415 * r78415;
        double r78429 = r78427 / r78428;
        double r78430 = r78426 + r78429;
        double r78431 = r78423 + r78430;
        double r78432 = -r78431;
        double r78433 = cbrt(r78415);
        double r78434 = r78433 * r78433;
        double r78435 = r78415 + r78427;
        double r78436 = r78435 / r78433;
        double r78437 = r78434 / r78436;
        double r78438 = r78415 - r78427;
        double r78439 = r78435 / r78438;
        double r78440 = r78437 - r78439;
        double r78441 = r78421 ? r78432 : r78440;
        return r78441;
}

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 < -7087.2986999786435 or 7229.990696850788 < x

    1. Initial program 59.2

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Simplified59.2

      \[\leadsto \color{blue}{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\]
    3. Taylor expanded around inf 0.4

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

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

    if -7087.2986999786435 < x < 7229.990696850788

    1. Initial program 0.1

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Simplified0.1

      \[\leadsto \color{blue}{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt0.1

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

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

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

Reproduce

herbie shell --seed 2019179 
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))