Average Error: 28.8 → 0.4
Time: 15.3s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.331107687230784:\\ \;\;\;\;-\left(\frac{1}{x \cdot x} + \left(\frac{3}{\left(x \cdot x\right) \cdot x} + \frac{3}{x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{3 \cdot x + 1}}{x + 1} \cdot \frac{-\sqrt{3 \cdot x + 1}}{x - 1}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -0.331107687230784:\\
\;\;\;\;-\left(\frac{1}{x \cdot x} + \left(\frac{3}{\left(x \cdot x\right) \cdot x} + \frac{3}{x}\right)\right)\\

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

\end{array}
double f(double x) {
        double r3981431 = x;
        double r3981432 = 1.0;
        double r3981433 = r3981431 + r3981432;
        double r3981434 = r3981431 / r3981433;
        double r3981435 = r3981431 - r3981432;
        double r3981436 = r3981433 / r3981435;
        double r3981437 = r3981434 - r3981436;
        return r3981437;
}

double f(double x) {
        double r3981438 = x;
        double r3981439 = -0.331107687230784;
        bool r3981440 = r3981438 <= r3981439;
        double r3981441 = 1.0;
        double r3981442 = r3981438 * r3981438;
        double r3981443 = r3981441 / r3981442;
        double r3981444 = 3.0;
        double r3981445 = r3981442 * r3981438;
        double r3981446 = r3981444 / r3981445;
        double r3981447 = r3981444 / r3981438;
        double r3981448 = r3981446 + r3981447;
        double r3981449 = r3981443 + r3981448;
        double r3981450 = -r3981449;
        double r3981451 = r3981444 * r3981438;
        double r3981452 = r3981451 + r3981441;
        double r3981453 = sqrt(r3981452);
        double r3981454 = r3981438 + r3981441;
        double r3981455 = r3981453 / r3981454;
        double r3981456 = -r3981453;
        double r3981457 = r3981438 - r3981441;
        double r3981458 = r3981456 / r3981457;
        double r3981459 = r3981455 * r3981458;
        double r3981460 = r3981440 ? r3981450 : r3981459;
        return r3981460;
}

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 < -0.331107687230784

    1. Initial program 58.4

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Taylor expanded around inf 0.9

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

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

    if -0.331107687230784 < x

    1. Initial program 19.1

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

      \[\leadsto \color{blue}{\frac{x \cdot \left(x - 1\right) - \left(x + 1\right) \cdot \left(x + 1\right)}{\left(x + 1\right) \cdot \left(x - 1\right)}}\]
    4. Taylor expanded around inf 10.1

      \[\leadsto \frac{\color{blue}{-\left(3 \cdot x + 1\right)}}{\left(x + 1\right) \cdot \left(x - 1\right)}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt10.1

      \[\leadsto \frac{-\color{blue}{\sqrt{3 \cdot x + 1} \cdot \sqrt{3 \cdot x + 1}}}{\left(x + 1\right) \cdot \left(x - 1\right)}\]
    7. Applied distribute-lft-neg-in10.1

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

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

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

Reproduce

herbie shell --seed 2019134 
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))