Average Error: 20.1 → 0.7
Time: 23.1s
Precision: 64
\[\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\]
\[\frac{\left(\left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x + 1} \cdot \sqrt{x}\right) + \sqrt{x + 1} \cdot \sqrt{x + 1}\right) \cdot \frac{1}{\mathsf{fma}\left(x + 1, \sqrt{x + 1}, x \cdot \sqrt{x}\right)}}{\sqrt{x + 1} \cdot \sqrt{x}}\]
\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}
\frac{\left(\left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x + 1} \cdot \sqrt{x}\right) + \sqrt{x + 1} \cdot \sqrt{x + 1}\right) \cdot \frac{1}{\mathsf{fma}\left(x + 1, \sqrt{x + 1}, x \cdot \sqrt{x}\right)}}{\sqrt{x + 1} \cdot \sqrt{x}}
double f(double x) {
        double r2347210 = 1.0;
        double r2347211 = x;
        double r2347212 = sqrt(r2347211);
        double r2347213 = r2347210 / r2347212;
        double r2347214 = r2347211 + r2347210;
        double r2347215 = sqrt(r2347214);
        double r2347216 = r2347210 / r2347215;
        double r2347217 = r2347213 - r2347216;
        return r2347217;
}

double f(double x) {
        double r2347218 = x;
        double r2347219 = sqrt(r2347218);
        double r2347220 = r2347219 * r2347219;
        double r2347221 = 1.0;
        double r2347222 = r2347218 + r2347221;
        double r2347223 = sqrt(r2347222);
        double r2347224 = r2347223 * r2347219;
        double r2347225 = r2347220 - r2347224;
        double r2347226 = r2347223 * r2347223;
        double r2347227 = r2347225 + r2347226;
        double r2347228 = r2347218 * r2347219;
        double r2347229 = fma(r2347222, r2347223, r2347228);
        double r2347230 = r2347221 / r2347229;
        double r2347231 = r2347227 * r2347230;
        double r2347232 = r2347231 / r2347224;
        return r2347232;
}

Error

Bits error versus x

Target

Original20.1
Target0.7
Herbie0.7
\[\frac{1}{\left(x + 1\right) \cdot \sqrt{x} + x \cdot \sqrt{x + 1}}\]

Derivation

  1. Initial program 20.1

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

    \[\leadsto \color{blue}{\frac{1 \cdot \sqrt{x + 1} - \sqrt{x} \cdot 1}{\sqrt{x} \cdot \sqrt{x + 1}}}\]
  4. Simplified20.0

    \[\leadsto \frac{\color{blue}{\sqrt{x + 1} - \sqrt{x}}}{\sqrt{x} \cdot \sqrt{x + 1}}\]
  5. Using strategy rm
  6. Applied flip--19.8

    \[\leadsto \frac{\color{blue}{\frac{\sqrt{x + 1} \cdot \sqrt{x + 1} - \sqrt{x} \cdot \sqrt{x}}{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x} \cdot \sqrt{x + 1}}\]
  7. Simplified19.4

    \[\leadsto \frac{\frac{\color{blue}{\left(1 + x\right) - x}}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x} \cdot \sqrt{x + 1}}\]
  8. Using strategy rm
  9. Applied flip3-+19.5

    \[\leadsto \frac{\frac{\left(1 + x\right) - x}{\color{blue}{\frac{{\left(\sqrt{x + 1}\right)}^{3} + {\left(\sqrt{x}\right)}^{3}}{\sqrt{x + 1} \cdot \sqrt{x + 1} + \left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x + 1} \cdot \sqrt{x}\right)}}}}{\sqrt{x} \cdot \sqrt{x + 1}}\]
  10. Applied associate-/r/19.4

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

    \[\leadsto \frac{\color{blue}{\frac{1 + 0}{\mathsf{fma}\left(x + 1, \sqrt{x + 1}, \sqrt{x} \cdot x\right)}} \cdot \left(\sqrt{x + 1} \cdot \sqrt{x + 1} + \left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x + 1} \cdot \sqrt{x}\right)\right)}{\sqrt{x} \cdot \sqrt{x + 1}}\]
  12. Final simplification0.7

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

Reproduce

herbie shell --seed 2019151 +o rules:numerics
(FPCore (x)
  :name "2isqrt (example 3.6)"

  :herbie-target
  (/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))

  (- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))