\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot 1}{\sqrt{x} \cdot \sqrt{x + 1} + x}}{\sqrt{x + 1}}double f(double x) {
double r135425 = 1.0;
double r135426 = x;
double r135427 = sqrt(r135426);
double r135428 = r135425 / r135427;
double r135429 = r135426 + r135425;
double r135430 = sqrt(r135429);
double r135431 = r135425 / r135430;
double r135432 = r135428 - r135431;
return r135432;
}
double f(double x) {
double r135433 = 1.0;
double r135434 = r135433 * r135433;
double r135435 = x;
double r135436 = sqrt(r135435);
double r135437 = r135435 + r135433;
double r135438 = sqrt(r135437);
double r135439 = r135436 * r135438;
double r135440 = r135439 + r135435;
double r135441 = r135434 / r135440;
double r135442 = r135441 / r135438;
return r135442;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.3 |
Initial program 20.0
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.7
Simplified19.3
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:precision binary64
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))