Average Error: 14.2 → 0.4
Time: 3.7s
Precision: binary64
\[\frac{1}{x + 1} - \frac{1}{x} \]
\[\frac{1}{\frac{\mathsf{fma}\left(x, x, x\right)}{-1}} \]
\frac{1}{x + 1} - \frac{1}{x}
\frac{1}{\frac{\mathsf{fma}\left(x, x, x\right)}{-1}}
(FPCore (x) :precision binary64 (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)))
(FPCore (x) :precision binary64 (/ 1.0 (/ (fma x x x) -1.0)))
double code(double x) {
	return (1.0 / (x + 1.0)) - (1.0 / x);
}
double code(double x) {
	return 1.0 / (fma(x, x, x) / -1.0);
}

Error

Bits error versus x

Derivation

  1. Initial program 14.2

    \[\frac{1}{x + 1} - \frac{1}{x} \]
  2. Applied frac-sub_binary6413.6

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

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

    \[\leadsto \frac{-1}{\color{blue}{\mathsf{fma}\left(x, x, x\right)}} \]
  5. Applied add-sqr-sqrt_binary6416.4

    \[\leadsto \frac{-1}{\color{blue}{\sqrt{\mathsf{fma}\left(x, x, x\right)} \cdot \sqrt{\mathsf{fma}\left(x, x, x\right)}}} \]
  6. Applied associate-/r*_binary6416.4

    \[\leadsto \color{blue}{\frac{\frac{-1}{\sqrt{\mathsf{fma}\left(x, x, x\right)}}}{\sqrt{\mathsf{fma}\left(x, x, x\right)}}} \]
  7. Applied clear-num_binary6416.4

    \[\leadsto \color{blue}{\frac{1}{\frac{\sqrt{\mathsf{fma}\left(x, x, x\right)}}{\frac{-1}{\sqrt{\mathsf{fma}\left(x, x, x\right)}}}}} \]
  8. Simplified0.4

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

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

Reproduce

herbie shell --seed 2021280 
(FPCore (x)
  :name "2frac (problem 3.3.1)"
  :precision binary64
  (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)))