Average Error: 14.4 → 0.1
Time: 14.3s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x}\]
\[\begin{array}{l} \mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -5.252123328811039127089581313168054066409 \cdot 10^{-17}:\\ \;\;\;\;\frac{1 \cdot x - 1 \cdot \left(x + 1\right)}{\left(x + 1\right) \cdot x}\\ \mathbf{elif}\;\frac{1}{x + 1} - \frac{1}{x} \le 0.0:\\ \;\;\;\;\frac{1}{\left(x \cdot x\right) \cdot x} - \mathsf{fma}\left(\frac{1}{x \cdot x}, \frac{1}{x \cdot x}, \frac{\frac{1}{x}}{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x + 1} - \frac{1}{x}\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x}
\begin{array}{l}
\mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -5.252123328811039127089581313168054066409 \cdot 10^{-17}:\\
\;\;\;\;\frac{1 \cdot x - 1 \cdot \left(x + 1\right)}{\left(x + 1\right) \cdot x}\\

\mathbf{elif}\;\frac{1}{x + 1} - \frac{1}{x} \le 0.0:\\
\;\;\;\;\frac{1}{\left(x \cdot x\right) \cdot x} - \mathsf{fma}\left(\frac{1}{x \cdot x}, \frac{1}{x \cdot x}, \frac{\frac{1}{x}}{x}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{x + 1} - \frac{1}{x}\\

\end{array}
double f(double x) {
        double r3444258 = 1.0;
        double r3444259 = x;
        double r3444260 = r3444259 + r3444258;
        double r3444261 = r3444258 / r3444260;
        double r3444262 = r3444258 / r3444259;
        double r3444263 = r3444261 - r3444262;
        return r3444263;
}

double f(double x) {
        double r3444264 = 1.0;
        double r3444265 = x;
        double r3444266 = r3444265 + r3444264;
        double r3444267 = r3444264 / r3444266;
        double r3444268 = r3444264 / r3444265;
        double r3444269 = r3444267 - r3444268;
        double r3444270 = -5.252123328811039e-17;
        bool r3444271 = r3444269 <= r3444270;
        double r3444272 = r3444264 * r3444265;
        double r3444273 = r3444264 * r3444266;
        double r3444274 = r3444272 - r3444273;
        double r3444275 = r3444266 * r3444265;
        double r3444276 = r3444274 / r3444275;
        double r3444277 = 0.0;
        bool r3444278 = r3444269 <= r3444277;
        double r3444279 = r3444265 * r3444265;
        double r3444280 = r3444279 * r3444265;
        double r3444281 = r3444264 / r3444280;
        double r3444282 = r3444264 / r3444279;
        double r3444283 = 1.0;
        double r3444284 = r3444283 / r3444279;
        double r3444285 = r3444268 / r3444265;
        double r3444286 = fma(r3444282, r3444284, r3444285);
        double r3444287 = r3444281 - r3444286;
        double r3444288 = r3444278 ? r3444287 : r3444269;
        double r3444289 = r3444271 ? r3444276 : r3444288;
        return r3444289;
}

Error

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)) < -5.252123328811039e-17

    1. Initial program 0.6

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

      \[\leadsto \color{blue}{\frac{1 \cdot x - \left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}}\]

    if -5.252123328811039e-17 < (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)) < 0.0

    1. Initial program 29.0

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

      \[\leadsto \color{blue}{\frac{1 \cdot x - \left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}}\]
    4. Using strategy rm
    5. Applied div-sub29.0

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

      \[\leadsto \color{blue}{\frac{1}{x + 1}} - \frac{\left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}\]
    7. Simplified29.0

      \[\leadsto \frac{1}{x + 1} - \color{blue}{\frac{1}{x}}\]
    8. Taylor expanded around inf 0.8

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

      \[\leadsto \color{blue}{\frac{1}{x \cdot \left(x \cdot x\right)} - \mathsf{fma}\left(\frac{1}{x \cdot x}, \frac{1}{x \cdot x}, \frac{1}{x \cdot x}\right)}\]
    10. Using strategy rm
    11. Applied associate-/r*0.1

      \[\leadsto \frac{1}{x \cdot \left(x \cdot x\right)} - \mathsf{fma}\left(\frac{1}{x \cdot x}, \frac{1}{x \cdot x}, \color{blue}{\frac{\frac{1}{x}}{x}}\right)\]

    if 0.0 < (- (/ 1.0 (+ x 1.0)) (/ 1.0 x))

    1. Initial program 0.0

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

      \[\leadsto \color{blue}{\frac{1 \cdot x - \left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}}\]
    4. Using strategy rm
    5. Applied div-sub0.0

      \[\leadsto \color{blue}{\frac{1 \cdot x}{\left(x + 1\right) \cdot x} - \frac{\left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}}\]
    6. Simplified0.0

      \[\leadsto \color{blue}{\frac{1}{x + 1}} - \frac{\left(x + 1\right) \cdot 1}{\left(x + 1\right) \cdot x}\]
    7. Simplified0.0

      \[\leadsto \frac{1}{x + 1} - \color{blue}{\frac{1}{x}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -5.252123328811039127089581313168054066409 \cdot 10^{-17}:\\ \;\;\;\;\frac{1 \cdot x - 1 \cdot \left(x + 1\right)}{\left(x + 1\right) \cdot x}\\ \mathbf{elif}\;\frac{1}{x + 1} - \frac{1}{x} \le 0.0:\\ \;\;\;\;\frac{1}{\left(x \cdot x\right) \cdot x} - \mathsf{fma}\left(\frac{1}{x \cdot x}, \frac{1}{x \cdot x}, \frac{\frac{1}{x}}{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x + 1} - \frac{1}{x}\\ \end{array}\]

Reproduce

herbie shell --seed 2019170 +o rules:numerics
(FPCore (x)
  :name "2frac (problem 3.3.1)"
  (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)))