Average Error: 14.2 → 0.1
Time: 17.3s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -193.412824135924694246568833477795124054 \lor \neg \left(x \le 328.3167435186423404047673102468252182007\right):\\ \;\;\;\;\left(-\frac{2}{{x}^{6}}\right) - \left(\frac{\frac{2}{x}}{x} + \frac{2}{{x}^{4}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x - 1}\right)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -193.412824135924694246568833477795124054 \lor \neg \left(x \le 328.3167435186423404047673102468252182007\right):\\
\;\;\;\;\left(-\frac{2}{{x}^{6}}\right) - \left(\frac{\frac{2}{x}}{x} + \frac{2}{{x}^{4}}\right)\\

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

\end{array}
double f(double x) {
        double r88226 = 1.0;
        double r88227 = x;
        double r88228 = r88227 + r88226;
        double r88229 = r88226 / r88228;
        double r88230 = r88227 - r88226;
        double r88231 = r88226 / r88230;
        double r88232 = r88229 - r88231;
        return r88232;
}

double f(double x) {
        double r88233 = x;
        double r88234 = -193.4128241359247;
        bool r88235 = r88233 <= r88234;
        double r88236 = 328.31674351864234;
        bool r88237 = r88233 <= r88236;
        double r88238 = !r88237;
        bool r88239 = r88235 || r88238;
        double r88240 = 2.0;
        double r88241 = 6.0;
        double r88242 = pow(r88233, r88241);
        double r88243 = r88240 / r88242;
        double r88244 = -r88243;
        double r88245 = r88240 / r88233;
        double r88246 = r88245 / r88233;
        double r88247 = 4.0;
        double r88248 = pow(r88233, r88247);
        double r88249 = r88240 / r88248;
        double r88250 = r88246 + r88249;
        double r88251 = r88244 - r88250;
        double r88252 = 1.0;
        double r88253 = 3.0;
        double r88254 = pow(r88233, r88253);
        double r88255 = pow(r88252, r88253);
        double r88256 = r88254 + r88255;
        double r88257 = r88252 / r88256;
        double r88258 = r88233 * r88233;
        double r88259 = r88252 * r88252;
        double r88260 = r88233 * r88252;
        double r88261 = r88259 - r88260;
        double r88262 = r88258 + r88261;
        double r88263 = r88233 - r88252;
        double r88264 = r88252 / r88263;
        double r88265 = -r88264;
        double r88266 = fma(r88257, r88262, r88265);
        double r88267 = r88239 ? r88251 : r88266;
        return r88267;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -193.4128241359247 or 328.31674351864234 < x

    1. Initial program 28.2

      \[\frac{1}{x + 1} - \frac{1}{x - 1}\]
    2. Taylor expanded around inf 0.7

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

      \[\leadsto \color{blue}{\left(-\frac{2}{{x}^{6}}\right) - \left(\frac{2}{x \cdot x} + \frac{2}{{x}^{4}}\right)}\]
    4. Using strategy rm
    5. Applied associate-/r*0.1

      \[\leadsto \left(-\frac{2}{{x}^{6}}\right) - \left(\color{blue}{\frac{\frac{2}{x}}{x}} + \frac{2}{{x}^{4}}\right)\]

    if -193.4128241359247 < x < 328.31674351864234

    1. Initial program 0.0

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

      \[\leadsto \frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - \frac{1}{x - 1}\]
    4. Applied associate-/r/0.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -193.412824135924694246568833477795124054 \lor \neg \left(x \le 328.3167435186423404047673102468252182007\right):\\ \;\;\;\;\left(-\frac{2}{{x}^{6}}\right) - \left(\frac{\frac{2}{x}}{x} + \frac{2}{{x}^{4}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x - 1}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(FPCore (x)
  :name "Asymptote A"
  :precision binary64
  (- (/ 1 (+ x 1)) (/ 1 (- x 1))))