Average Error: 29.5 → 0.5
Time: 14.1s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.0026376323582022:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\ \mathbf{elif}\;x \le 1.020834055947729:\\ \;\;\;\;x \cdot \left(3 + x\right) + 1\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -1.0026376323582022:\\
\;\;\;\;\left(\frac{-1}{x \cdot x} + \frac{-3}{x}\right) + \frac{\frac{-3}{x}}{x \cdot x}\\

\mathbf{elif}\;x \le 1.020834055947729:\\
\;\;\;\;x \cdot \left(3 + x\right) + 1\\

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

\end{array}
double f(double x) {
        double r5570874 = x;
        double r5570875 = 1.0;
        double r5570876 = r5570874 + r5570875;
        double r5570877 = r5570874 / r5570876;
        double r5570878 = r5570874 - r5570875;
        double r5570879 = r5570876 / r5570878;
        double r5570880 = r5570877 - r5570879;
        return r5570880;
}

double f(double x) {
        double r5570881 = x;
        double r5570882 = -1.0026376323582022;
        bool r5570883 = r5570881 <= r5570882;
        double r5570884 = -1.0;
        double r5570885 = r5570881 * r5570881;
        double r5570886 = r5570884 / r5570885;
        double r5570887 = -3.0;
        double r5570888 = r5570887 / r5570881;
        double r5570889 = r5570886 + r5570888;
        double r5570890 = r5570888 / r5570885;
        double r5570891 = r5570889 + r5570890;
        double r5570892 = 1.020834055947729;
        bool r5570893 = r5570881 <= r5570892;
        double r5570894 = 3.0;
        double r5570895 = r5570894 + r5570881;
        double r5570896 = r5570881 * r5570895;
        double r5570897 = 1.0;
        double r5570898 = r5570896 + r5570897;
        double r5570899 = r5570893 ? r5570898 : r5570891;
        double r5570900 = r5570883 ? r5570891 : r5570899;
        return r5570900;
}

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 < -1.0026376323582022 or 1.020834055947729 < x

    1. Initial program 58.6

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied clear-num58.6

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

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

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

    if -1.0026376323582022 < x < 1.020834055947729

    1. Initial program 0.0

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied clear-num0.0

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\frac{1}{\frac{x - 1}{x + 1}}}\]
    4. Taylor expanded around 0 0.5

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(-\left(2 \cdot \left(x + x \cdot x\right) + 1\right)\right)}\]
    6. Taylor expanded around 0 0.6

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

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

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

Reproduce

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