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

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

\end{array}
double f(double x) {
        double r142138 = x;
        double r142139 = 1.0;
        double r142140 = r142138 + r142139;
        double r142141 = r142138 / r142140;
        double r142142 = r142138 - r142139;
        double r142143 = r142140 / r142142;
        double r142144 = r142141 - r142143;
        return r142144;
}

double f(double x) {
        double r142145 = x;
        double r142146 = -12747.116603779426;
        bool r142147 = r142145 <= r142146;
        double r142148 = 9605.386656004559;
        bool r142149 = r142145 <= r142148;
        double r142150 = !r142149;
        bool r142151 = r142147 || r142150;
        double r142152 = 1.0;
        double r142153 = 2.0;
        double r142154 = pow(r142145, r142153);
        double r142155 = r142152 / r142154;
        double r142156 = 3.0;
        double r142157 = r142156 / r142145;
        double r142158 = r142155 + r142157;
        double r142159 = -r142158;
        double r142160 = 1.0;
        double r142161 = 3.0;
        double r142162 = pow(r142145, r142161);
        double r142163 = r142160 / r142162;
        double r142164 = r142163 * r142156;
        double r142165 = r142159 - r142164;
        double r142166 = r142145 + r142152;
        double r142167 = r142145 / r142166;
        double r142168 = r142145 - r142152;
        double r142169 = r142166 / r142168;
        double r142170 = pow(r142169, r142161);
        double r142171 = cbrt(r142170);
        double r142172 = r142167 - r142171;
        double r142173 = r142151 ? r142165 : r142172;
        return r142173;
}

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 < -12747.116603779426 or 9605.386656004559 < x

    1. Initial program 59.1

      \[\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}^{2}} - 3 \cdot \left(\frac{1}{x} + \frac{1}{{x}^{3}}\right)}\]
    4. Using strategy rm
    5. Applied distribute-rgt-in0.3

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

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

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

    if -12747.116603779426 < x < 9605.386656004559

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \frac{x + 1}{\color{blue}{\sqrt[3]{\left(\left(x - 1\right) \cdot \left(x - 1\right)\right) \cdot \left(x - 1\right)}}}\]
    4. Applied add-cbrt-cube0.1

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

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

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

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

Reproduce

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