Average Error: 15.0 → 0.0
Time: 4.3s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -251.059718325982459 \lor \neg \left(x \le 242.729507781342221\right):\\ \;\;\;\;\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, {x}^{\left(-2\right)}, 2 \cdot \frac{1}{{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 -251.059718325982459 \lor \neg \left(x \le 242.729507781342221\right):\\
\;\;\;\;\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, {x}^{\left(-2\right)}, 2 \cdot \frac{1}{{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 r97052 = 1.0;
        double r97053 = x;
        double r97054 = r97053 + r97052;
        double r97055 = r97052 / r97054;
        double r97056 = r97053 - r97052;
        double r97057 = r97052 / r97056;
        double r97058 = r97055 - r97057;
        return r97058;
}

double f(double x) {
        double r97059 = x;
        double r97060 = -251.05971832598246;
        bool r97061 = r97059 <= r97060;
        double r97062 = 242.72950778134222;
        bool r97063 = r97059 <= r97062;
        double r97064 = !r97063;
        bool r97065 = r97061 || r97064;
        double r97066 = 2.0;
        double r97067 = -r97066;
        double r97068 = 6.0;
        double r97069 = pow(r97059, r97068);
        double r97070 = r97067 / r97069;
        double r97071 = 2.0;
        double r97072 = -r97071;
        double r97073 = pow(r97059, r97072);
        double r97074 = 1.0;
        double r97075 = 4.0;
        double r97076 = pow(r97059, r97075);
        double r97077 = r97074 / r97076;
        double r97078 = r97066 * r97077;
        double r97079 = fma(r97066, r97073, r97078);
        double r97080 = r97070 - r97079;
        double r97081 = 1.0;
        double r97082 = 3.0;
        double r97083 = pow(r97059, r97082);
        double r97084 = pow(r97081, r97082);
        double r97085 = r97083 + r97084;
        double r97086 = r97081 / r97085;
        double r97087 = r97059 * r97059;
        double r97088 = r97081 * r97081;
        double r97089 = r97059 * r97081;
        double r97090 = r97088 - r97089;
        double r97091 = r97087 + r97090;
        double r97092 = r97059 - r97081;
        double r97093 = r97081 / r97092;
        double r97094 = -r97093;
        double r97095 = fma(r97086, r97091, r97094);
        double r97096 = r97065 ? r97080 : r97095;
        return r97096;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -251.05971832598246 or 242.72950778134222 < x

    1. Initial program 29.4

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

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

      \[\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 -251.05971832598246 < x < 242.72950778134222

    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.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -251.059718325982459 \lor \neg \left(x \le 242.729507781342221\right):\\ \;\;\;\;\frac{-2}{{x}^{6}} - \mathsf{fma}\left(2, {x}^{\left(-2\right)}, 2 \cdot \frac{1}{{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 2020025 +o rules:numerics
(FPCore (x)
  :name "Asymptote A"
  :precision binary64
  (- (/ 1 (+ x 1)) (/ 1 (- x 1))))