Average Error: 29.2 → 0.1
Time: 23.2s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -11322.697042010475:\\ \;\;\;\;-\left(\frac{3}{x} + \mathsf{fma}\left(\left(\frac{1}{x}\right), \left(\frac{1}{x}\right), \left(\frac{\frac{3}{x}}{x \cdot x}\right)\right)\right)\\ \mathbf{elif}\;x \le 12771.17250257884:\\ \;\;\;\;\mathsf{fma}\left(x, \left(\frac{1}{1 + x}\right), \left(\left(1 + x\right) \cdot \frac{-1}{x - 1}\right)\right) + \mathsf{fma}\left(\left(\frac{-1}{x - 1}\right), \left(1 + x\right), \left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;-\left(\frac{3}{x} + \mathsf{fma}\left(\left(\frac{1}{x}\right), \left(\frac{1}{x}\right), \left(\frac{\frac{3}{x}}{x \cdot x}\right)\right)\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -11322.697042010475:\\
\;\;\;\;-\left(\frac{3}{x} + \mathsf{fma}\left(\left(\frac{1}{x}\right), \left(\frac{1}{x}\right), \left(\frac{\frac{3}{x}}{x \cdot x}\right)\right)\right)\\

\mathbf{elif}\;x \le 12771.17250257884:\\
\;\;\;\;\mathsf{fma}\left(x, \left(\frac{1}{1 + x}\right), \left(\left(1 + x\right) \cdot \frac{-1}{x - 1}\right)\right) + \mathsf{fma}\left(\left(\frac{-1}{x - 1}\right), \left(1 + x\right), \left(\left(1 + x\right) \cdot \frac{1}{x - 1}\right)\right)\\

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

\end{array}
double f(double x) {
        double r3627158 = x;
        double r3627159 = 1.0;
        double r3627160 = r3627158 + r3627159;
        double r3627161 = r3627158 / r3627160;
        double r3627162 = r3627158 - r3627159;
        double r3627163 = r3627160 / r3627162;
        double r3627164 = r3627161 - r3627163;
        return r3627164;
}

double f(double x) {
        double r3627165 = x;
        double r3627166 = -11322.697042010475;
        bool r3627167 = r3627165 <= r3627166;
        double r3627168 = 3.0;
        double r3627169 = r3627168 / r3627165;
        double r3627170 = 1.0;
        double r3627171 = r3627170 / r3627165;
        double r3627172 = r3627165 * r3627165;
        double r3627173 = r3627169 / r3627172;
        double r3627174 = fma(r3627171, r3627171, r3627173);
        double r3627175 = r3627169 + r3627174;
        double r3627176 = -r3627175;
        double r3627177 = 12771.17250257884;
        bool r3627178 = r3627165 <= r3627177;
        double r3627179 = r3627170 + r3627165;
        double r3627180 = r3627170 / r3627179;
        double r3627181 = -1.0;
        double r3627182 = r3627165 - r3627170;
        double r3627183 = r3627181 / r3627182;
        double r3627184 = r3627179 * r3627183;
        double r3627185 = fma(r3627165, r3627180, r3627184);
        double r3627186 = r3627170 / r3627182;
        double r3627187 = r3627179 * r3627186;
        double r3627188 = fma(r3627183, r3627179, r3627187);
        double r3627189 = r3627185 + r3627188;
        double r3627190 = r3627178 ? r3627189 : r3627176;
        double r3627191 = r3627167 ? r3627176 : r3627190;
        return r3627191;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -11322.697042010475 or 12771.17250257884 < 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(\frac{1}{{x}^{2}} + 3 \cdot \frac{1}{x}\right)\right)}\]
    3. Simplified0.0

      \[\leadsto \color{blue}{-\left(\left(\frac{1}{x \cdot x} + \frac{3}{x}\right) + \frac{3}{x \cdot \left(x \cdot x\right)}\right)}\]
    4. Taylor expanded around 0 0.3

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

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

    if -11322.697042010475 < x < 12771.17250257884

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\left(x + 1\right) \cdot \frac{1}{x - 1}}\]
    4. Applied div-inv0.1

      \[\leadsto \color{blue}{x \cdot \frac{1}{x + 1}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    5. Applied prod-diff0.1

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

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

Reproduce

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