\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 r148960 = 1.0;
double r148961 = x;
double r148962 = sqrt(r148961);
double r148963 = r148960 / r148962;
double r148964 = r148961 + r148960;
double r148965 = sqrt(r148964);
double r148966 = r148960 / r148965;
double r148967 = r148963 - r148966;
return r148967;
}
double f(double x) {
double r148968 = 1.0;
double r148969 = sqrt(r148968);
double r148970 = x;
double r148971 = r148970 + r148968;
double r148972 = sqrt(r148971);
double r148973 = sqrt(r148970);
double r148974 = r148972 + r148973;
double r148975 = sqrt(r148974);
double r148976 = r148969 / r148975;
double r148977 = r148976 * r148976;
double r148978 = r148968 * r148977;
double r148979 = r148973 * r148972;
double r148980 = r148978 / r148979;
return r148980;
}




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
(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)))))