Average Error: 29.1 → 0.3
Time: 15.7s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 2.606370674840263745863921940326690673828 \cdot 10^{-11}:\\ \;\;\;\;\left(-\left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\right) - \frac{3}{{x}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\frac{x}{x + 1}\right)}^{3} - {\left(x + 1\right)}^{3} \cdot {\left(\frac{1}{x - 1}\right)}^{3}}{\frac{x \cdot x}{\left(x + 1\right) \cdot \left(x + 1\right)} + \frac{x + \left(x + 1\right) \cdot \frac{x + 1}{x - 1}}{x - 1}}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 2.606370674840263745863921940326690673828 \cdot 10^{-11}:\\
\;\;\;\;\left(-\left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\right) - \frac{3}{{x}^{3}}\\

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

\end{array}
double f(double x) {
        double r104898 = x;
        double r104899 = 1.0;
        double r104900 = r104898 + r104899;
        double r104901 = r104898 / r104900;
        double r104902 = r104898 - r104899;
        double r104903 = r104900 / r104902;
        double r104904 = r104901 - r104903;
        return r104904;
}

double f(double x) {
        double r104905 = x;
        double r104906 = 1.0;
        double r104907 = r104905 + r104906;
        double r104908 = r104905 / r104907;
        double r104909 = r104905 - r104906;
        double r104910 = r104907 / r104909;
        double r104911 = r104908 - r104910;
        double r104912 = 2.6063706748402637e-11;
        bool r104913 = r104911 <= r104912;
        double r104914 = 3.0;
        double r104915 = r104914 / r104905;
        double r104916 = r104906 / r104905;
        double r104917 = r104916 / r104905;
        double r104918 = r104915 + r104917;
        double r104919 = -r104918;
        double r104920 = 3.0;
        double r104921 = pow(r104905, r104920);
        double r104922 = r104914 / r104921;
        double r104923 = r104919 - r104922;
        double r104924 = pow(r104908, r104920);
        double r104925 = pow(r104907, r104920);
        double r104926 = 1.0;
        double r104927 = r104926 / r104909;
        double r104928 = pow(r104927, r104920);
        double r104929 = r104925 * r104928;
        double r104930 = r104924 - r104929;
        double r104931 = r104905 * r104905;
        double r104932 = r104907 * r104907;
        double r104933 = r104931 / r104932;
        double r104934 = r104907 * r104910;
        double r104935 = r104905 + r104934;
        double r104936 = r104935 / r104909;
        double r104937 = r104933 + r104936;
        double r104938 = r104930 / r104937;
        double r104939 = r104913 ? r104923 : r104938;
        return r104939;
}

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 (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 2.6063706748402637e-11

    1. Initial program 59.3

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

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

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

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

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

    if 2.6063706748402637e-11 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0)))

    1. Initial program 0.3

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 2.606370674840263745863921940326690673828 \cdot 10^{-11}:\\ \;\;\;\;\left(-\left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\right) - \frac{3}{{x}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\frac{x}{x + 1}\right)}^{3} - {\left(x + 1\right)}^{3} \cdot {\left(\frac{1}{x - 1}\right)}^{3}}{\frac{x \cdot x}{\left(x + 1\right) \cdot \left(x + 1\right)} + \frac{x + \left(x + 1\right) \cdot \frac{x + 1}{x - 1}}{x - 1}}\\ \end{array}\]

Reproduce

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