\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\frac{\frac{\sqrt{x + 1} \cdot x + \left(x + 1\right) \cdot \sqrt{x}}{1}}{1}}double f(double x) {
double r133733 = 1.0;
double r133734 = x;
double r133735 = sqrt(r133734);
double r133736 = r133733 / r133735;
double r133737 = r133734 + r133733;
double r133738 = sqrt(r133737);
double r133739 = r133733 / r133738;
double r133740 = r133736 - r133739;
return r133740;
}
double f(double x) {
double r133741 = 1.0;
double r133742 = x;
double r133743 = 1.0;
double r133744 = r133742 + r133743;
double r133745 = sqrt(r133744);
double r133746 = r133745 * r133742;
double r133747 = sqrt(r133742);
double r133748 = r133744 * r133747;
double r133749 = r133746 + r133748;
double r133750 = r133749 / r133743;
double r133751 = r133750 / r133743;
double r133752 = r133741 / r133751;
return r133752;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.6 |
Initial program 20.0
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.8
Simplified19.4
Taylor expanded around 0 0.4
rmApplied clear-num0.8
Simplified0.6
Final simplification0.6
herbie shell --seed 2019306
(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)))))