Average Error: 29.7 → 0.2
Time: 16.1s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 7.9939934938 \cdot 10^{-7}:\\ \;\;\;\;\left(-\frac{\frac{1}{x}}{x}\right) - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{x}{x + 1} - \frac{x + 1}{x - 1}} \cdot \sqrt{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 7.9939934938 \cdot 10^{-7}:\\
\;\;\;\;\left(-\frac{\frac{1}{x}}{x}\right) - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\

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

\end{array}
double f(double x) {
        double r125355 = x;
        double r125356 = 1.0;
        double r125357 = r125355 + r125356;
        double r125358 = r125355 / r125357;
        double r125359 = r125355 - r125356;
        double r125360 = r125357 / r125359;
        double r125361 = r125358 - r125360;
        return r125361;
}

double f(double x) {
        double r125362 = x;
        double r125363 = 1.0;
        double r125364 = r125362 + r125363;
        double r125365 = r125362 / r125364;
        double r125366 = r125362 - r125363;
        double r125367 = r125364 / r125366;
        double r125368 = r125365 - r125367;
        double r125369 = 7.993993493826679e-07;
        bool r125370 = r125368 <= r125369;
        double r125371 = r125363 / r125362;
        double r125372 = r125371 / r125362;
        double r125373 = -r125372;
        double r125374 = 3.0;
        double r125375 = r125374 / r125362;
        double r125376 = 3.0;
        double r125377 = pow(r125362, r125376);
        double r125378 = r125374 / r125377;
        double r125379 = r125375 + r125378;
        double r125380 = r125373 - r125379;
        double r125381 = sqrt(r125368);
        double r125382 = r125381 * r125381;
        double r125383 = r125370 ? r125380 : r125382;
        return r125383;
}

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 (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 7.993993493826679e-07

    1. Initial program 59.0

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

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

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

    if 7.993993493826679e-07 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0)))

    1. Initial program 0.1

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

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

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

Reproduce

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