Average Error: 14.4 → 0.0
Time: 3.5s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -4067.847585363629605126334354281425476074 \lor \neg \left(x \le 6197.824943452278603217564523220062255859\right):\\ \;\;\;\;\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, {x}^{\left(-2\right)}, 2 \cdot \frac{1}{{x}^{4}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(x + \left(\left(-1\right) - \left(x + 1\right)\right)\right)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -4067.847585363629605126334354281425476074 \lor \neg \left(x \le 6197.824943452278603217564523220062255859\right):\\
\;\;\;\;\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, {x}^{\left(-2\right)}, 2 \cdot \frac{1}{{x}^{4}}\right)\\

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

\end{array}
double f(double x) {
        double r144236 = 1.0;
        double r144237 = x;
        double r144238 = r144237 + r144236;
        double r144239 = r144236 / r144238;
        double r144240 = r144237 - r144236;
        double r144241 = r144236 / r144240;
        double r144242 = r144239 - r144241;
        return r144242;
}

double f(double x) {
        double r144243 = x;
        double r144244 = -4067.8475853636296;
        bool r144245 = r144243 <= r144244;
        double r144246 = 6197.824943452279;
        bool r144247 = r144243 <= r144246;
        double r144248 = !r144247;
        bool r144249 = r144245 || r144248;
        double r144250 = 2.0;
        double r144251 = -r144250;
        double r144252 = 6.0;
        double r144253 = pow(r144243, r144252);
        double r144254 = r144251 / r144253;
        double r144255 = 2.0;
        double r144256 = -r144255;
        double r144257 = pow(r144243, r144256);
        double r144258 = 1.0;
        double r144259 = 4.0;
        double r144260 = pow(r144243, r144259);
        double r144261 = r144258 / r144260;
        double r144262 = r144250 * r144261;
        double r144263 = fma(r144250, r144257, r144262);
        double r144264 = r144254 - r144263;
        double r144265 = 1.0;
        double r144266 = r144243 * r144243;
        double r144267 = r144265 * r144265;
        double r144268 = r144266 - r144267;
        double r144269 = r144265 / r144268;
        double r144270 = -r144265;
        double r144271 = r144243 + r144265;
        double r144272 = r144270 - r144271;
        double r144273 = r144243 + r144272;
        double r144274 = r144269 * r144273;
        double r144275 = r144249 ? r144264 : r144274;
        return r144275;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -4067.8475853636296 or 6197.824943452279 < x

    1. Initial program 29.0

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

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

      \[\leadsto \color{blue}{\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, \frac{1}{{x}^{2}}, 2 \cdot \frac{1}{{x}^{4}}\right)}\]
    4. Using strategy rm
    5. Applied pow-flip0.0

      \[\leadsto \frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, \color{blue}{{x}^{\left(-2\right)}}, 2 \cdot \frac{1}{{x}^{4}}\right)\]

    if -4067.8475853636296 < x < 6197.824943452279

    1. Initial program 0.0

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

      \[\leadsto \frac{1}{x + 1} - \frac{1}{\color{blue}{\frac{x \cdot x - 1 \cdot 1}{x + 1}}}\]
    4. Applied associate-/r/0.0

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

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

      \[\leadsto \color{blue}{\frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(x - 1\right)} - \frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(x + 1\right)\]
    7. Applied distribute-lft-out--0.0

      \[\leadsto \color{blue}{\frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(\left(x - 1\right) - \left(x + 1\right)\right)}\]
    8. Using strategy rm
    9. Applied sub-neg0.0

      \[\leadsto \frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(\color{blue}{\left(x + \left(-1\right)\right)} - \left(x + 1\right)\right)\]
    10. Applied associate--l+0.0

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

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

Reproduce

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