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

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

\end{array}
double f(double x) {
        double r55882 = x;
        double r55883 = 1.0;
        double r55884 = r55882 + r55883;
        double r55885 = r55882 / r55884;
        double r55886 = r55882 - r55883;
        double r55887 = r55884 / r55886;
        double r55888 = r55885 - r55887;
        return r55888;
}

double f(double x) {
        double r55889 = x;
        double r55890 = -10439.152056359573;
        bool r55891 = r55889 <= r55890;
        double r55892 = 11917.97074271185;
        bool r55893 = r55889 <= r55892;
        double r55894 = !r55893;
        bool r55895 = r55891 || r55894;
        double r55896 = 1.0;
        double r55897 = r55896 / r55889;
        double r55898 = 3.0;
        double r55899 = r55897 + r55898;
        double r55900 = -r55899;
        double r55901 = r55900 / r55889;
        double r55902 = 3.0;
        double r55903 = pow(r55889, r55902);
        double r55904 = r55898 / r55903;
        double r55905 = r55901 - r55904;
        double r55906 = r55896 - r55889;
        double r55907 = r55896 * r55906;
        double r55908 = r55889 * r55907;
        double r55909 = r55903 + r55908;
        double r55910 = r55889 + r55896;
        double r55911 = pow(r55896, r55902);
        double r55912 = r55903 + r55911;
        double r55913 = r55889 - r55896;
        double r55914 = r55912 / r55913;
        double r55915 = r55910 * r55914;
        double r55916 = r55909 - r55915;
        double r55917 = r55889 * r55889;
        double r55918 = r55917 + r55907;
        double r55919 = r55918 * r55910;
        double r55920 = r55916 / r55919;
        double r55921 = r55895 ? r55905 : r55920;
        return r55921;
}

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 < -10439.152056359573 or 11917.97074271185 < x

    1. Initial program 59.3

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

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

      \[\leadsto \color{blue}{\frac{-1}{x} \cdot \left(\frac{1}{x} + 3\right) - \frac{3}{{x}^{3}}}\]
    4. Using strategy rm
    5. Applied pow10.3

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

      \[\leadsto \color{blue}{{\left(\frac{-1}{x}\right)}^{1}} \cdot {\left(\frac{1}{x} + 3\right)}^{1} - \frac{3}{{x}^{3}}\]
    7. Applied pow-prod-down0.3

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

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

    if -10439.152056359573 < x < 11917.97074271185

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(x + 1\right) \cdot \frac{1}{x - 1}}\]
    4. Using strategy rm
    5. Applied flip3-+0.1

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

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

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

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

      \[\leadsto \frac{\left({x}^{3} + x \cdot \left(1 \cdot \left(1 - x\right)\right)\right) - \left(x + 1\right) \cdot \frac{{x}^{3} + {1}^{3}}{x - 1}}{\color{blue}{\left(x \cdot x + 1 \cdot \left(1 - x\right)\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 -10439.15205635957318008877336978912353516 \lor \neg \left(x \le 11917.97074271185010729823261499404907227\right):\\ \;\;\;\;\frac{-\left(\frac{1}{x} + 3\right)}{x} - \frac{3}{{x}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left({x}^{3} + x \cdot \left(1 \cdot \left(1 - x\right)\right)\right) - \left(x + 1\right) \cdot \frac{{x}^{3} + {1}^{3}}{x - 1}}{\left(x \cdot x + 1 \cdot \left(1 - x\right)\right) \cdot \left(x + 1\right)}\\ \end{array}\]

Reproduce

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