Average Error: 28.8 → 0.1
Time: 25.7s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -11441.972173855373:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \mathbf{elif}\;x \le 12248.492747534847:\\ \;\;\;\;\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}:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \end{array}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -11441.972173855373:\\
\;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\

\mathbf{elif}\;x \le 12248.492747534847:\\
\;\;\;\;\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}:\\
\;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\

\end{array}
double f(double x) {
        double r3190148 = x;
        double r3190149 = 1.0;
        double r3190150 = r3190148 + r3190149;
        double r3190151 = r3190148 / r3190150;
        double r3190152 = r3190148 - r3190149;
        double r3190153 = r3190150 / r3190152;
        double r3190154 = r3190151 - r3190153;
        return r3190154;
}

double f(double x) {
        double r3190155 = x;
        double r3190156 = -11441.972173855373;
        bool r3190157 = r3190155 <= r3190156;
        double r3190158 = 3.0;
        double r3190159 = r3190158 / r3190155;
        double r3190160 = 1.0;
        double r3190161 = r3190160 / r3190155;
        double r3190162 = r3190161 / r3190155;
        double r3190163 = fma(r3190159, r3190162, r3190162);
        double r3190164 = r3190163 + r3190159;
        double r3190165 = -r3190164;
        double r3190166 = 12248.492747534847;
        bool r3190167 = r3190155 <= r3190166;
        double r3190168 = r3190155 - r3190160;
        double r3190169 = r3190160 / r3190168;
        double r3190170 = -r3190169;
        double r3190171 = r3190160 + r3190155;
        double r3190172 = r3190171 * r3190169;
        double r3190173 = fma(r3190170, r3190171, r3190172);
        double r3190174 = r3190155 / r3190171;
        double r3190175 = r3190171 * r3190170;
        double r3190176 = fma(r3190160, r3190174, r3190175);
        double r3190177 = r3190173 + r3190176;
        double r3190178 = r3190167 ? r3190177 : r3190165;
        double r3190179 = r3190157 ? r3190165 : r3190178;
        return r3190179;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -11441.972173855373 or 12248.492747534847 < x

    1. Initial program 59.2

      \[\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.3

      \[\leadsto \color{blue}{-\mathsf{fma}\left(3, \frac{1}{x \cdot \left(x \cdot x\right)}, \frac{1}{x \cdot x} + \frac{1}{x} \cdot 3\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(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)}\]

    if -11441.972173855373 < x < 12248.492747534847

    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 -11441.972173855373:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \mathbf{elif}\;x \le 12248.492747534847:\\ \;\;\;\;\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}:\\ \;\;\;\;-\left(\mathsf{fma}\left(\frac{3}{x}, \frac{\frac{1}{x}}{x}, \frac{\frac{1}{x}}{x}\right) + \frac{3}{x}\right)\\ \end{array}\]

Reproduce

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