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

\end{array}
double f(double x) {
        double r108439 = 1.0;
        double r108440 = x;
        double r108441 = r108440 + r108439;
        double r108442 = r108439 / r108441;
        double r108443 = r108440 - r108439;
        double r108444 = r108439 / r108443;
        double r108445 = r108442 - r108444;
        return r108445;
}

double f(double x) {
        double r108446 = x;
        double r108447 = -479.9294980198728;
        bool r108448 = r108446 <= r108447;
        double r108449 = 328.31674351864234;
        bool r108450 = r108446 <= r108449;
        double r108451 = !r108450;
        bool r108452 = r108448 || r108451;
        double r108453 = 2.0;
        double r108454 = 6.0;
        double r108455 = pow(r108446, r108454);
        double r108456 = r108453 / r108455;
        double r108457 = -r108456;
        double r108458 = r108453 / r108446;
        double r108459 = r108458 / r108446;
        double r108460 = 4.0;
        double r108461 = pow(r108446, r108460);
        double r108462 = r108453 / r108461;
        double r108463 = r108459 + r108462;
        double r108464 = r108457 - r108463;
        double r108465 = 1.0;
        double r108466 = 3.0;
        double r108467 = pow(r108446, r108466);
        double r108468 = pow(r108465, r108466);
        double r108469 = r108467 + r108468;
        double r108470 = r108465 / r108469;
        double r108471 = r108465 - r108446;
        double r108472 = r108465 * r108471;
        double r108473 = fma(r108446, r108446, r108472);
        double r108474 = r108446 - r108465;
        double r108475 = r108465 / r108474;
        double r108476 = -r108475;
        double r108477 = fma(r108470, r108473, r108476);
        double r108478 = r108452 ? r108464 : r108477;
        return r108478;
}

Error

Bits error versus x

Derivation

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

    1. Initial program 28.3

      \[\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 -479.9294980198728 < x < 328.31674351864234

    1. Initial program 0.0

      \[\frac{1}{x + 1} - \frac{1}{x - 1}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.1

      \[\leadsto \frac{1}{x + 1} - \color{blue}{\left(\sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}\right) \cdot \sqrt[3]{\frac{1}{x - 1}}}\]
    4. Applied flip3-+0.1

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\sqrt[3]{\frac{1}{x - 1}} \cdot \left(\sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{1}{x - 1}}, \sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}, \sqrt[3]{\frac{1}{x - 1}} \cdot \left(\sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}\right)\right)}\]
    7. Simplified0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, \mathsf{fma}\left(x, x, 1 \cdot \left(1 - x\right)\right), -\frac{1}{x - 1}\right)} + \mathsf{fma}\left(-\sqrt[3]{\frac{1}{x - 1}}, \sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}, \sqrt[3]{\frac{1}{x - 1}} \cdot \left(\sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}\right)\right)\]
    8. Simplified0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -479.9294980198728239884076174348592758179 \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}}, \mathsf{fma}\left(x, x, 1 \cdot \left(1 - x\right)\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))))