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

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

\end{array}
double f(double x) {
        double r167864 = 1.0;
        double r167865 = x;
        double r167866 = r167865 + r167864;
        double r167867 = r167864 / r167866;
        double r167868 = r167865 - r167864;
        double r167869 = r167864 / r167868;
        double r167870 = r167867 - r167869;
        return r167870;
}

double f(double x) {
        double r167871 = x;
        double r167872 = -219.25550675598262;
        bool r167873 = r167871 <= r167872;
        double r167874 = 225.84837423869962;
        bool r167875 = r167871 <= r167874;
        double r167876 = !r167875;
        bool r167877 = r167873 || r167876;
        double r167878 = 2.0;
        double r167879 = 6.0;
        double r167880 = pow(r167871, r167879);
        double r167881 = r167878 / r167880;
        double r167882 = r167878 / r167871;
        double r167883 = r167882 / r167871;
        double r167884 = 4.0;
        double r167885 = pow(r167871, r167884);
        double r167886 = r167878 / r167885;
        double r167887 = r167883 + r167886;
        double r167888 = r167881 + r167887;
        double r167889 = -r167888;
        double r167890 = 1.0;
        double r167891 = 3.0;
        double r167892 = pow(r167890, r167891);
        double r167893 = pow(r167871, r167891);
        double r167894 = r167892 + r167893;
        double r167895 = r167890 / r167894;
        double r167896 = r167890 - r167871;
        double r167897 = r167890 * r167896;
        double r167898 = fma(r167871, r167871, r167897);
        double r167899 = r167890 + r167871;
        double r167900 = r167890 * r167899;
        double r167901 = fma(r167871, r167871, r167900);
        double r167902 = -r167901;
        double r167903 = r167893 - r167892;
        double r167904 = r167890 / r167903;
        double r167905 = r167902 * r167904;
        double r167906 = fma(r167895, r167898, r167905);
        double r167907 = r167901 + r167902;
        double r167908 = r167904 * r167907;
        double r167909 = r167906 + r167908;
        double r167910 = r167877 ? r167889 : r167909;
        return r167910;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -219.25550675598262 or 225.84837423869962 < x

    1. Initial program 29.8

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

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

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

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

    if -219.25550675598262 < x < 225.84837423869962

    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}{x + 1} - \frac{1}{\color{blue}{\frac{{x}^{3} - {1}^{3}}{x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)}}}\]
    4. Applied associate-/r/0.0

      \[\leadsto \frac{1}{x + 1} - \color{blue}{\frac{1}{{x}^{3} - {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)\right)}\]
    5. 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}^{3} - {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)\right)\]
    6. 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}^{3} - {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 + x \cdot 1\right)\right)\]
    7. Applied prod-diff0.0

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

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

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

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

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (x)
  :name "Asymptote A"
  (- (/ 1.0 (+ x 1.0)) (/ 1.0 (- x 1.0))))