\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot \frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x}}}{\sqrt{x + 1}}double f(double x) {
double r224972 = 1.0;
double r224973 = x;
double r224974 = sqrt(r224973);
double r224975 = r224972 / r224974;
double r224976 = r224973 + r224972;
double r224977 = sqrt(r224976);
double r224978 = r224972 / r224977;
double r224979 = r224975 - r224978;
return r224979;
}
double f(double x) {
double r224980 = 1.0;
double r224981 = x;
double r224982 = r224981 + r224980;
double r224983 = sqrt(r224982);
double r224984 = sqrt(r224981);
double r224985 = r224983 + r224984;
double r224986 = r224980 / r224985;
double r224987 = r224980 * r224986;
double r224988 = r224987 / r224984;
double r224989 = r224988 / r224983;
return r224989;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.4
rmApplied frac-sub19.3
Simplified19.3
rmApplied flip--19.0
Simplified18.6
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2020062
(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)))))