Average Error: 14.4 → 0.1
Time: 23.8s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -213.48879909880657 \lor \neg \left(x \le 226.65001029383706\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), \mathsf{fma}\left(x, x, \left(x + 1\right) \cdot 1\right) \cdot \left(-\frac{1}{{x}^{3} - {1}^{3}}\right)\right) + \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)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -213.48879909880657 \lor \neg \left(x \le 226.65001029383706\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), \mathsf{fma}\left(x, x, \left(x + 1\right) \cdot 1\right) \cdot \left(-\frac{1}{{x}^{3} - {1}^{3}}\right)\right) + \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)\\

\end{array}
double f(double x) {
        double r113877 = 1.0;
        double r113878 = x;
        double r113879 = r113878 + r113877;
        double r113880 = r113877 / r113879;
        double r113881 = r113878 - r113877;
        double r113882 = r113877 / r113881;
        double r113883 = r113880 - r113882;
        return r113883;
}

double f(double x) {
        double r113884 = x;
        double r113885 = -213.48879909880657;
        bool r113886 = r113884 <= r113885;
        double r113887 = 226.65001029383706;
        bool r113888 = r113884 <= r113887;
        double r113889 = !r113888;
        bool r113890 = r113886 || r113889;
        double r113891 = 2.0;
        double r113892 = 6.0;
        double r113893 = pow(r113884, r113892);
        double r113894 = r113891 / r113893;
        double r113895 = -r113894;
        double r113896 = r113891 / r113884;
        double r113897 = r113896 / r113884;
        double r113898 = 4.0;
        double r113899 = pow(r113884, r113898);
        double r113900 = r113891 / r113899;
        double r113901 = r113897 + r113900;
        double r113902 = r113895 - r113901;
        double r113903 = 1.0;
        double r113904 = 3.0;
        double r113905 = pow(r113884, r113904);
        double r113906 = pow(r113903, r113904);
        double r113907 = r113905 + r113906;
        double r113908 = r113903 / r113907;
        double r113909 = r113903 - r113884;
        double r113910 = r113903 * r113909;
        double r113911 = fma(r113884, r113884, r113910);
        double r113912 = r113884 + r113903;
        double r113913 = r113912 * r113903;
        double r113914 = fma(r113884, r113884, r113913);
        double r113915 = r113905 - r113906;
        double r113916 = r113903 / r113915;
        double r113917 = -r113916;
        double r113918 = r113914 * r113917;
        double r113919 = fma(r113908, r113911, r113918);
        double r113920 = -r113914;
        double r113921 = r113920 + r113914;
        double r113922 = r113916 * r113921;
        double r113923 = r113919 + r113922;
        double r113924 = r113890 ? r113902 : r113923;
        return r113924;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -213.48879909880657 or 226.65001029383706 < x

    1. Initial program 28.6

      \[\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 -213.48879909880657 < x < 226.65001029383706

    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, 1 \cdot \left(1 - x\right)\right), \mathsf{fma}\left(x, x, \left(x + 1\right) \cdot 1\right) \cdot \left(-\frac{1}{{x}^{3} - {1}^{3}}\right)\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, 1 \cdot \left(1 - x\right)\right), \mathsf{fma}\left(x, x, \left(x + 1\right) \cdot 1\right) \cdot \left(-\frac{1}{{x}^{3} - {1}^{3}}\right)\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 -213.48879909880657 \lor \neg \left(x \le 226.65001029383706\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), \mathsf{fma}\left(x, x, \left(x + 1\right) \cdot 1\right) \cdot \left(-\frac{1}{{x}^{3} - {1}^{3}}\right)\right) + \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)\\ \end{array}\]

Reproduce

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