Average Error: 29.1 → 0.3
Time: 14.0s
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}:\\ \;\;\;\;\frac{-1}{x} \cdot \frac{1}{x} + \left(\frac{-3}{x} - \frac{3}{{x}^{3}}\right)\\ \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}:\\
\;\;\;\;\frac{-1}{x} \cdot \frac{1}{x} + \left(\frac{-3}{x} - \frac{3}{{x}^{3}}\right)\\

\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 r76801 = x;
        double r76802 = 1.0;
        double r76803 = r76801 + r76802;
        double r76804 = r76801 / r76803;
        double r76805 = r76801 - r76802;
        double r76806 = r76803 / r76805;
        double r76807 = r76804 - r76806;
        return r76807;
}

double f(double x) {
        double r76808 = x;
        double r76809 = 1.0;
        double r76810 = r76808 + r76809;
        double r76811 = r76808 / r76810;
        double r76812 = r76808 - r76809;
        double r76813 = r76810 / r76812;
        double r76814 = r76811 - r76813;
        double r76815 = 2.6063706748402637e-11;
        bool r76816 = r76814 <= r76815;
        double r76817 = -1.0;
        double r76818 = r76817 / r76808;
        double r76819 = r76809 / r76808;
        double r76820 = r76818 * r76819;
        double r76821 = 3.0;
        double r76822 = -r76821;
        double r76823 = r76822 / r76808;
        double r76824 = 3.0;
        double r76825 = pow(r76808, r76824);
        double r76826 = r76821 / r76825;
        double r76827 = r76823 - r76826;
        double r76828 = r76820 + r76827;
        double r76829 = pow(r76811, r76824);
        double r76830 = pow(r76810, r76824);
        double r76831 = 1.0;
        double r76832 = r76831 / r76812;
        double r76833 = pow(r76832, r76824);
        double r76834 = r76830 * r76833;
        double r76835 = r76829 - r76834;
        double r76836 = r76808 * r76808;
        double r76837 = r76810 * r76810;
        double r76838 = r76836 / r76837;
        double r76839 = r76810 * r76813;
        double r76840 = r76808 + r76839;
        double r76841 = r76840 / r76812;
        double r76842 = r76838 + r76841;
        double r76843 = r76835 / r76842;
        double r76844 = r76816 ? r76828 : r76843;
        return r76844;
}

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. Applied associate--l+0.5

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

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

    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}:\\ \;\;\;\;\frac{-1}{x} \cdot \frac{1}{x} + \left(\frac{-3}{x} - \frac{3}{{x}^{3}}\right)\\ \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))))