Average Error: 29.4 → 0.1
Time: 4.3s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.99782307839973639 \lor \neg \left(x \le 11941.1541135256684\right):\\ \;\;\;\;\left(\frac{-1}{{x}^{2}} - \frac{3}{x}\right) - \frac{3}{{x}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt{x + 1}} \cdot \frac{\sqrt[3]{x}}{\sqrt{x + 1}} - \frac{x + 1}{x - 1}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -0.99782307839973639 \lor \neg \left(x \le 11941.1541135256684\right):\\
\;\;\;\;\left(\frac{-1}{{x}^{2}} - \frac{3}{x}\right) - \frac{3}{{x}^{3}}\\

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

\end{array}
double f(double x) {
        double r228767 = x;
        double r228768 = 1.0;
        double r228769 = r228767 + r228768;
        double r228770 = r228767 / r228769;
        double r228771 = r228767 - r228768;
        double r228772 = r228769 / r228771;
        double r228773 = r228770 - r228772;
        return r228773;
}

double f(double x) {
        double r228774 = x;
        double r228775 = -0.9978230783997364;
        bool r228776 = r228774 <= r228775;
        double r228777 = 11941.154113525668;
        bool r228778 = r228774 <= r228777;
        double r228779 = !r228778;
        bool r228780 = r228776 || r228779;
        double r228781 = 1.0;
        double r228782 = -r228781;
        double r228783 = 2.0;
        double r228784 = pow(r228774, r228783);
        double r228785 = r228782 / r228784;
        double r228786 = 3.0;
        double r228787 = r228786 / r228774;
        double r228788 = r228785 - r228787;
        double r228789 = 3.0;
        double r228790 = pow(r228774, r228789);
        double r228791 = r228786 / r228790;
        double r228792 = r228788 - r228791;
        double r228793 = cbrt(r228774);
        double r228794 = r228793 * r228793;
        double r228795 = r228774 + r228781;
        double r228796 = sqrt(r228795);
        double r228797 = r228794 / r228796;
        double r228798 = r228793 / r228796;
        double r228799 = r228797 * r228798;
        double r228800 = r228774 - r228781;
        double r228801 = r228795 / r228800;
        double r228802 = r228799 - r228801;
        double r228803 = r228780 ? r228792 : r228802;
        return r228803;
}

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.9978230783997364 or 11941.154113525668 < x

    1. Initial program 58.9

      \[\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{-1}{{x}^{2}} - \frac{3}{x}\right) - \frac{3}{{x}^{3}}}\]

    if -0.9978230783997364 < x < 11941.154113525668

    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 \frac{x}{\color{blue}{\sqrt{x + 1} \cdot \sqrt{x + 1}}} - \frac{x + 1}{x - 1}\]
    4. Applied add-cube-cbrt0.1

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

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

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

Reproduce

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