Average Error: 29.6 → 0.1
Time: 17.8s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -13116.810079769337:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} - \frac{3}{x}\right) - \frac{3}{\left(x \cdot x\right) \cdot x}\\ \mathbf{elif}\;x \le 11473.666639898413:\\ \;\;\;\;\frac{\left(x - 1\right) \cdot x - \left(1 + x\right) \cdot \left(1 + x\right)}{\left(x - 1\right) \cdot \left(1 + x\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{-1}{x \cdot x} - \frac{3}{x}\right) - \frac{3}{\left(x \cdot x\right) \cdot x}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -13116.810079769337:\\
\;\;\;\;\left(\frac{-1}{x \cdot x} - \frac{3}{x}\right) - \frac{3}{\left(x \cdot x\right) \cdot x}\\

\mathbf{elif}\;x \le 11473.666639898413:\\
\;\;\;\;\frac{\left(x - 1\right) \cdot x - \left(1 + x\right) \cdot \left(1 + x\right)}{\left(x - 1\right) \cdot \left(1 + x\right)}\\

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

\end{array}
double f(double x) {
        double r5303954 = x;
        double r5303955 = 1.0;
        double r5303956 = r5303954 + r5303955;
        double r5303957 = r5303954 / r5303956;
        double r5303958 = r5303954 - r5303955;
        double r5303959 = r5303956 / r5303958;
        double r5303960 = r5303957 - r5303959;
        return r5303960;
}

double f(double x) {
        double r5303961 = x;
        double r5303962 = -13116.810079769337;
        bool r5303963 = r5303961 <= r5303962;
        double r5303964 = -1.0;
        double r5303965 = r5303961 * r5303961;
        double r5303966 = r5303964 / r5303965;
        double r5303967 = 3.0;
        double r5303968 = r5303967 / r5303961;
        double r5303969 = r5303966 - r5303968;
        double r5303970 = r5303965 * r5303961;
        double r5303971 = r5303967 / r5303970;
        double r5303972 = r5303969 - r5303971;
        double r5303973 = 11473.666639898413;
        bool r5303974 = r5303961 <= r5303973;
        double r5303975 = 1.0;
        double r5303976 = r5303961 - r5303975;
        double r5303977 = r5303976 * r5303961;
        double r5303978 = r5303975 + r5303961;
        double r5303979 = r5303978 * r5303978;
        double r5303980 = r5303977 - r5303979;
        double r5303981 = r5303976 * r5303978;
        double r5303982 = r5303980 / r5303981;
        double r5303983 = r5303974 ? r5303982 : r5303972;
        double r5303984 = r5303963 ? r5303972 : r5303983;
        return r5303984;
}

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 < -13116.810079769337 or 11473.666639898413 < x

    1. Initial program 59.2

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

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

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

    if -13116.810079769337 < x < 11473.666639898413

    1. Initial program 0.1

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

      \[\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)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

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

Reproduce

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