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

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

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

\end{array}
double f(double x) {
        double r4426019 = x;
        double r4426020 = 1.0;
        double r4426021 = r4426019 + r4426020;
        double r4426022 = r4426019 / r4426021;
        double r4426023 = r4426019 - r4426020;
        double r4426024 = r4426021 / r4426023;
        double r4426025 = r4426022 - r4426024;
        return r4426025;
}

double f(double x) {
        double r4426026 = x;
        double r4426027 = -11803.492419360771;
        bool r4426028 = r4426026 <= r4426027;
        double r4426029 = 3.0;
        double r4426030 = r4426029 / r4426026;
        double r4426031 = 1.0;
        double r4426032 = r4426026 * r4426026;
        double r4426033 = r4426031 / r4426032;
        double r4426034 = r4426033 + r4426030;
        double r4426035 = fma(r4426030, r4426033, r4426034);
        double r4426036 = -r4426035;
        double r4426037 = 12922.792445976746;
        bool r4426038 = r4426026 <= r4426037;
        double r4426039 = r4426026 - r4426031;
        double r4426040 = r4426031 / r4426039;
        double r4426041 = -r4426040;
        double r4426042 = r4426031 + r4426026;
        double r4426043 = r4426042 * r4426040;
        double r4426044 = fma(r4426041, r4426042, r4426043);
        double r4426045 = r4426026 / r4426042;
        double r4426046 = r4426042 * r4426041;
        double r4426047 = fma(r4426031, r4426045, r4426046);
        double r4426048 = r4426044 + r4426047;
        double r4426049 = r4426038 ? r4426048 : r4426036;
        double r4426050 = r4426028 ? r4426036 : r4426049;
        return r4426050;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -11803.492419360771 or 12922.792445976746 < 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}{-\mathsf{fma}\left(\frac{3}{x}, \frac{1}{x \cdot x}, \frac{1}{x \cdot x} + \frac{3}{x}\right)}\]

    if -11803.492419360771 < x < 12922.792445976746

    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 *-un-lft-identity0.1

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(1, \frac{x}{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.1

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

Reproduce

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