Average Error: 29.3 → 0.3
Time: 18.1s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1781634.10393738676793873310089111328125 \lor \neg \left(x \le 67933.41155031512607820332050323486328125\right):\\ \;\;\;\;-\left(\frac{3}{x} + \left(\frac{3}{{x}^{3}} + \log \left(e^{\frac{\frac{1}{x}}{x}}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{x + 1}{x}} - \frac{x + 1}{x - 1}\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -1781634.10393738676793873310089111328125 \lor \neg \left(x \le 67933.41155031512607820332050323486328125\right):\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{3}{{x}^{3}} + \log \left(e^{\frac{\frac{1}{x}}{x}}\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{x}} - \frac{x + 1}{x - 1}\\

\end{array}
double f(double x) {
        double r111070 = x;
        double r111071 = 1.0;
        double r111072 = r111070 + r111071;
        double r111073 = r111070 / r111072;
        double r111074 = r111070 - r111071;
        double r111075 = r111072 / r111074;
        double r111076 = r111073 - r111075;
        return r111076;
}

double f(double x) {
        double r111077 = x;
        double r111078 = -1781634.1039373868;
        bool r111079 = r111077 <= r111078;
        double r111080 = 67933.41155031513;
        bool r111081 = r111077 <= r111080;
        double r111082 = !r111081;
        bool r111083 = r111079 || r111082;
        double r111084 = 3.0;
        double r111085 = r111084 / r111077;
        double r111086 = 3.0;
        double r111087 = pow(r111077, r111086);
        double r111088 = r111084 / r111087;
        double r111089 = 1.0;
        double r111090 = r111089 / r111077;
        double r111091 = r111090 / r111077;
        double r111092 = exp(r111091);
        double r111093 = log(r111092);
        double r111094 = r111088 + r111093;
        double r111095 = r111085 + r111094;
        double r111096 = -r111095;
        double r111097 = 1.0;
        double r111098 = r111077 + r111089;
        double r111099 = r111098 / r111077;
        double r111100 = r111097 / r111099;
        double r111101 = r111077 - r111089;
        double r111102 = r111098 / r111101;
        double r111103 = r111100 - r111102;
        double r111104 = r111083 ? r111096 : r111103;
        return r111104;
}

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 < -1781634.1039373868 or 67933.41155031513 < x

    1. Initial program 59.6

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Simplified59.6

      \[\leadsto \color{blue}{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\]
    3. 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)}\]
    4. Simplified0.0

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

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

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

    if -1781634.1039373868 < x < 67933.41155031513

    1. Initial program 0.1

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Simplified0.1

      \[\leadsto \color{blue}{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\]
    3. Using strategy rm
    4. Applied clear-num0.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1781634.10393738676793873310089111328125 \lor \neg \left(x \le 67933.41155031512607820332050323486328125\right):\\ \;\;\;\;-\left(\frac{3}{x} + \left(\frac{3}{{x}^{3}} + \log \left(e^{\frac{\frac{1}{x}}{x}}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{x + 1}{x}} - \frac{x + 1}{x - 1}\\ \end{array}\]

Reproduce

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