\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\left(\sqrt{x + 1} \cdot \sqrt{x + 1} + \left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x} \cdot \sqrt{x + 1}\right)\right) \cdot \frac{1}{\sqrt{x} \cdot x + \left(x + 1\right) \cdot \sqrt{x + 1}}}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r4169326 = 1.0;
double r4169327 = x;
double r4169328 = sqrt(r4169327);
double r4169329 = r4169326 / r4169328;
double r4169330 = r4169327 + r4169326;
double r4169331 = sqrt(r4169330);
double r4169332 = r4169326 / r4169331;
double r4169333 = r4169329 - r4169332;
return r4169333;
}
double f(double x) {
double r4169334 = x;
double r4169335 = 1.0;
double r4169336 = r4169334 + r4169335;
double r4169337 = sqrt(r4169336);
double r4169338 = r4169337 * r4169337;
double r4169339 = sqrt(r4169334);
double r4169340 = r4169339 * r4169339;
double r4169341 = r4169339 * r4169337;
double r4169342 = r4169340 - r4169341;
double r4169343 = r4169338 + r4169342;
double r4169344 = r4169339 * r4169334;
double r4169345 = r4169336 * r4169337;
double r4169346 = r4169344 + r4169345;
double r4169347 = r4169335 / r4169346;
double r4169348 = r4169343 * r4169347;
double r4169349 = r4169337 * r4169339;
double r4169350 = r4169348 / r4169349;
return r4169350;
}




Bits error versus x
Results
| Original | 19.6 |
|---|---|
| Target | 0.6 |
| Herbie | 0.7 |
Initial program 19.6
rmApplied frac-sub19.6
Simplified19.6
rmApplied flip--19.4
Simplified0.4
rmApplied flip3-+0.8
Applied associate-/r/0.8
Simplified0.7
Final simplification0.7
herbie shell --seed 2019139
(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)))))