\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \left(\frac{\sqrt{1}}{\sqrt{\sqrt{x + 1} + \sqrt{x}}} \cdot \frac{\sqrt{1}}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}\right)}{\sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r147598 = 1.0;
double r147599 = x;
double r147600 = sqrt(r147599);
double r147601 = r147598 / r147600;
double r147602 = r147599 + r147598;
double r147603 = sqrt(r147602);
double r147604 = r147598 / r147603;
double r147605 = r147601 - r147604;
return r147605;
}
double f(double x) {
double r147606 = 1.0;
double r147607 = sqrt(r147606);
double r147608 = x;
double r147609 = r147608 + r147606;
double r147610 = sqrt(r147609);
double r147611 = sqrt(r147608);
double r147612 = r147610 + r147611;
double r147613 = sqrt(r147612);
double r147614 = r147607 / r147613;
double r147615 = r147614 * r147614;
double r147616 = r147606 * r147615;
double r147617 = r147611 * r147610;
double r147618 = r147616 / r147617;
return r147618;
}




Bits error versus x
Results
| Original | 19.8 |
|---|---|
| Target | 0.6 |
| Herbie | 0.5 |
Initial program 19.8
rmApplied frac-sub19.8
Simplified19.8
rmApplied flip--19.6
Simplified19.1
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.4
Applied add-sqr-sqrt0.4
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019344 +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)))))