Average Error: 28.7 → 0.1
Time: 16.4s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -14393.03598665572280879132449626922607422:\\ \;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\ \mathbf{elif}\;x \le 10331.68170507998729590326547622680664062:\\ \;\;\;\;x \cdot \frac{1}{x + 1} - \frac{x + 1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -14393.03598665572280879132449626922607422:\\
\;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\

\mathbf{elif}\;x \le 10331.68170507998729590326547622680664062:\\
\;\;\;\;x \cdot \frac{1}{x + 1} - \frac{x + 1}{x - 1}\\

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

\end{array}
double f(double x) {
        double r4530733 = x;
        double r4530734 = 1.0;
        double r4530735 = r4530733 + r4530734;
        double r4530736 = r4530733 / r4530735;
        double r4530737 = r4530733 - r4530734;
        double r4530738 = r4530735 / r4530737;
        double r4530739 = r4530736 - r4530738;
        return r4530739;
}

double f(double x) {
        double r4530740 = x;
        double r4530741 = -14393.035986655723;
        bool r4530742 = r4530740 <= r4530741;
        double r4530743 = 3.0;
        double r4530744 = r4530740 * r4530740;
        double r4530745 = r4530744 * r4530740;
        double r4530746 = r4530743 / r4530745;
        double r4530747 = -r4530746;
        double r4530748 = r4530743 / r4530740;
        double r4530749 = 1.0;
        double r4530750 = r4530749 / r4530740;
        double r4530751 = r4530750 / r4530740;
        double r4530752 = r4530748 + r4530751;
        double r4530753 = r4530747 - r4530752;
        double r4530754 = 10331.681705079987;
        bool r4530755 = r4530740 <= r4530754;
        double r4530756 = 1.0;
        double r4530757 = r4530740 + r4530749;
        double r4530758 = r4530756 / r4530757;
        double r4530759 = r4530740 * r4530758;
        double r4530760 = r4530740 - r4530749;
        double r4530761 = r4530757 / r4530760;
        double r4530762 = r4530759 - r4530761;
        double r4530763 = r4530755 ? r4530762 : r4530753;
        double r4530764 = r4530742 ? r4530753 : r4530763;
        return r4530764;
}

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 < -14393.035986655723 or 10331.681705079987 < x

    1. Initial program 59.4

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

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

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

    if -14393.035986655723 < x < 10331.681705079987

    1. Initial program 0.1

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

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

Reproduce

herbie shell --seed 2019192 
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))