Average Error: 29.6 → 0.1
Time: 24.0s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -13498.121057699798:\\ \;\;\;\;\mathsf{fma}\left(\frac{-3}{x}, \frac{1}{x \cdot x}, \frac{-3}{x} - \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 11033.995023478727:\\ \;\;\;\;\log \left(e^{\mathsf{fma}\left(x, \frac{1}{1 + x}, -\frac{1 + x}{x - 1}\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-3}{x}, \frac{1}{x \cdot x}, \frac{-3}{x} - \frac{1}{x \cdot x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -13498.121057699798:\\
\;\;\;\;\mathsf{fma}\left(\frac{-3}{x}, \frac{1}{x \cdot x}, \frac{-3}{x} - \frac{1}{x \cdot x}\right)\\

\mathbf{elif}\;x \le 11033.995023478727:\\
\;\;\;\;\log \left(e^{\mathsf{fma}\left(x, \frac{1}{1 + x}, -\frac{1 + x}{x - 1}\right)}\right)\\

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

\end{array}
double f(double x) {
        double r5710158 = x;
        double r5710159 = 1.0;
        double r5710160 = r5710158 + r5710159;
        double r5710161 = r5710158 / r5710160;
        double r5710162 = r5710158 - r5710159;
        double r5710163 = r5710160 / r5710162;
        double r5710164 = r5710161 - r5710163;
        return r5710164;
}

double f(double x) {
        double r5710165 = x;
        double r5710166 = -13498.121057699798;
        bool r5710167 = r5710165 <= r5710166;
        double r5710168 = -3.0;
        double r5710169 = r5710168 / r5710165;
        double r5710170 = 1.0;
        double r5710171 = r5710165 * r5710165;
        double r5710172 = r5710170 / r5710171;
        double r5710173 = r5710169 - r5710172;
        double r5710174 = fma(r5710169, r5710172, r5710173);
        double r5710175 = 11033.995023478727;
        bool r5710176 = r5710165 <= r5710175;
        double r5710177 = r5710170 + r5710165;
        double r5710178 = r5710170 / r5710177;
        double r5710179 = r5710165 - r5710170;
        double r5710180 = r5710177 / r5710179;
        double r5710181 = -r5710180;
        double r5710182 = fma(r5710165, r5710178, r5710181);
        double r5710183 = exp(r5710182);
        double r5710184 = log(r5710183);
        double r5710185 = r5710176 ? r5710184 : r5710174;
        double r5710186 = r5710167 ? r5710174 : r5710185;
        return r5710186;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -13498.121057699798 or 11033.995023478727 < x

    1. Initial program 59.2

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\log \left(e^{\frac{x + 1}{x - 1}}\right)}\]
    4. Applied add-log-exp59.2

      \[\leadsto \color{blue}{\log \left(e^{\frac{x}{x + 1}}\right)} - \log \left(e^{\frac{x + 1}{x - 1}}\right)\]
    5. Applied diff-log59.2

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

      \[\leadsto \log \color{blue}{\left(e^{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\right)}\]
    7. Using strategy rm
    8. Applied div-inv59.4

      \[\leadsto \log \left(e^{\color{blue}{x \cdot \frac{1}{1 + x}} - \frac{1 + x}{x - 1}}\right)\]
    9. Applied fma-neg59.4

      \[\leadsto \log \left(e^{\color{blue}{\mathsf{fma}\left(x, \frac{1}{1 + x}, -\frac{1 + x}{x - 1}\right)}}\right)\]
    10. Taylor expanded around inf 0.3

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

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

    if -13498.121057699798 < x < 11033.995023478727

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\log \left(e^{\frac{x + 1}{x - 1}}\right)}\]
    4. Applied add-log-exp0.1

      \[\leadsto \color{blue}{\log \left(e^{\frac{x}{x + 1}}\right)} - \log \left(e^{\frac{x + 1}{x - 1}}\right)\]
    5. Applied diff-log0.1

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

      \[\leadsto \log \color{blue}{\left(e^{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\right)}\]
    7. Using strategy rm
    8. Applied div-inv0.1

      \[\leadsto \log \left(e^{\color{blue}{x \cdot \frac{1}{1 + x}} - \frac{1 + x}{x - 1}}\right)\]
    9. Applied fma-neg0.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -13498.121057699798:\\ \;\;\;\;\mathsf{fma}\left(\frac{-3}{x}, \frac{1}{x \cdot x}, \frac{-3}{x} - \frac{1}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 11033.995023478727:\\ \;\;\;\;\log \left(e^{\mathsf{fma}\left(x, \frac{1}{1 + x}, -\frac{1 + x}{x - 1}\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-3}{x}, \frac{1}{x \cdot x}, \frac{-3}{x} - \frac{1}{x \cdot x}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x)
  :name "Asymptote C"
  (- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))