Average Error: 29.3 → 0.2
Time: 17.8s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.0028494934768706:\\ \;\;\;\;\frac{-3}{x} + \left(\frac{-1}{x \cdot x} + \frac{\frac{-3}{x}}{x \cdot x}\right)\\ \mathbf{elif}\;x \le 10076.446968341284:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, 1 + x, \left(1 + x\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(\frac{1}{\sqrt{1 + x}}, \frac{x}{\sqrt{1 + x}}, \left(1 + x\right) \cdot \frac{-1}{x - 1}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-3}{x} + \left(\frac{-1}{x \cdot x} + \frac{\frac{-3}{x}}{x \cdot x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -1.0028494934768706:\\
\;\;\;\;\frac{-3}{x} + \left(\frac{-1}{x \cdot x} + \frac{\frac{-3}{x}}{x \cdot x}\right)\\

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

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

\end{array}
double f(double x) {
        double r4302157 = x;
        double r4302158 = 1.0;
        double r4302159 = r4302157 + r4302158;
        double r4302160 = r4302157 / r4302159;
        double r4302161 = r4302157 - r4302158;
        double r4302162 = r4302159 / r4302161;
        double r4302163 = r4302160 - r4302162;
        return r4302163;
}

double f(double x) {
        double r4302164 = x;
        double r4302165 = -1.0028494934768706;
        bool r4302166 = r4302164 <= r4302165;
        double r4302167 = -3.0;
        double r4302168 = r4302167 / r4302164;
        double r4302169 = -1.0;
        double r4302170 = r4302164 * r4302164;
        double r4302171 = r4302169 / r4302170;
        double r4302172 = r4302168 / r4302170;
        double r4302173 = r4302171 + r4302172;
        double r4302174 = r4302168 + r4302173;
        double r4302175 = 10076.446968341284;
        bool r4302176 = r4302164 <= r4302175;
        double r4302177 = 1.0;
        double r4302178 = r4302164 - r4302177;
        double r4302179 = r4302169 / r4302178;
        double r4302180 = r4302177 + r4302164;
        double r4302181 = r4302177 / r4302178;
        double r4302182 = r4302180 * r4302181;
        double r4302183 = fma(r4302179, r4302180, r4302182);
        double r4302184 = sqrt(r4302180);
        double r4302185 = r4302177 / r4302184;
        double r4302186 = r4302164 / r4302184;
        double r4302187 = r4302180 * r4302179;
        double r4302188 = fma(r4302185, r4302186, r4302187);
        double r4302189 = r4302183 + r4302188;
        double r4302190 = r4302176 ? r4302189 : r4302174;
        double r4302191 = r4302166 ? r4302174 : r4302190;
        return r4302191;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -1.0028494934768706 or 10076.446968341284 < x

    1. Initial program 58.8

      \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
    2. Using strategy rm
    3. Applied log1p-expm1-u58.8

      \[\leadsto \frac{x}{x + 1} - \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{x + 1}{x - 1}\right)\right)}\]
    4. Taylor expanded around inf 0.6

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

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

    if -1.0028494934768706 < x < 10076.446968341284

    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 add-sqr-sqrt0.1

      \[\leadsto \frac{x}{\color{blue}{\sqrt{x + 1} \cdot \sqrt{x + 1}}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    5. Applied *-un-lft-identity0.1

      \[\leadsto \frac{\color{blue}{1 \cdot x}}{\sqrt{x + 1} \cdot \sqrt{x + 1}} - \left(x + 1\right) \cdot \frac{1}{x - 1}\]
    6. Applied times-frac0.1

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

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

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

Reproduce

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