Average Error: 14.0 → 0.4
Time: 14.7s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x}\]
\[\frac{1}{-\mathsf{fma}\left(x, x, x\right)}\]
\frac{1}{x + 1} - \frac{1}{x}
\frac{1}{-\mathsf{fma}\left(x, x, x\right)}
double f(double x) {
        double r1836605 = 1.0;
        double r1836606 = x;
        double r1836607 = r1836606 + r1836605;
        double r1836608 = r1836605 / r1836607;
        double r1836609 = r1836605 / r1836606;
        double r1836610 = r1836608 - r1836609;
        return r1836610;
}

double f(double x) {
        double r1836611 = 1.0;
        double r1836612 = x;
        double r1836613 = fma(r1836612, r1836612, r1836612);
        double r1836614 = -r1836613;
        double r1836615 = r1836611 / r1836614;
        return r1836615;
}

Error

Bits error versus x

Derivation

  1. Initial program 14.0

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

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

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

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

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

    \[\leadsto \frac{1}{\color{blue}{-\mathsf{fma}\left(x, x, x\right)}}\]
  9. Final simplification0.4

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

Reproduce

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