Average Error: 14.7 → 0.1
Time: 15.0s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -9003244184241789 \lor \neg \left(x \le 41603129.67642414569854736328125\right):\\ \;\;\;\;\frac{-2}{{x}^{4}} - \left(\frac{\frac{2}{x}}{x} + \frac{2}{{x}^{6}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x \cdot x - 1 \cdot 1} \cdot \left(\left(x - 1\right) - \left(1 + x\right)\right)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -9003244184241789 \lor \neg \left(x \le 41603129.67642414569854736328125\right):\\
\;\;\;\;\frac{-2}{{x}^{4}} - \left(\frac{\frac{2}{x}}{x} + \frac{2}{{x}^{6}}\right)\\

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

\end{array}
double f(double x) {
        double r150704 = 1.0;
        double r150705 = x;
        double r150706 = r150705 + r150704;
        double r150707 = r150704 / r150706;
        double r150708 = r150705 - r150704;
        double r150709 = r150704 / r150708;
        double r150710 = r150707 - r150709;
        return r150710;
}

double f(double x) {
        double r150711 = x;
        double r150712 = -9003244184241789.0;
        bool r150713 = r150711 <= r150712;
        double r150714 = 41603129.676424146;
        bool r150715 = r150711 <= r150714;
        double r150716 = !r150715;
        bool r150717 = r150713 || r150716;
        double r150718 = 2.0;
        double r150719 = -r150718;
        double r150720 = 4.0;
        double r150721 = pow(r150711, r150720);
        double r150722 = r150719 / r150721;
        double r150723 = r150718 / r150711;
        double r150724 = r150723 / r150711;
        double r150725 = 6.0;
        double r150726 = pow(r150711, r150725);
        double r150727 = r150718 / r150726;
        double r150728 = r150724 + r150727;
        double r150729 = r150722 - r150728;
        double r150730 = 1.0;
        double r150731 = r150711 * r150711;
        double r150732 = r150730 * r150730;
        double r150733 = r150731 - r150732;
        double r150734 = r150730 / r150733;
        double r150735 = r150711 - r150730;
        double r150736 = r150730 + r150711;
        double r150737 = r150735 - r150736;
        double r150738 = r150734 * r150737;
        double r150739 = r150717 ? r150729 : r150738;
        return r150739;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -9003244184241789.0 or 41603129.676424146 < x

    1. Initial program 29.7

      \[\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}{\frac{-2}{{x}^{4}} - \left(\frac{2}{{x}^{6}} + \frac{2}{x \cdot x}\right)}\]
    4. Using strategy rm
    5. Applied associate-/r*0.1

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

    if -9003244184241789.0 < x < 41603129.676424146

    1. Initial program 0.8

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

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

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

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

      \[\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)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

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

Reproduce

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