\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \left(\frac{1}{\sqrt{\sqrt{x} + \sqrt{x + 1}}} \cdot \frac{1}{\sqrt{\sqrt{x} + \sqrt{x + 1}}}\right)}{\sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r127897 = 1.0;
double r127898 = x;
double r127899 = sqrt(r127898);
double r127900 = r127897 / r127899;
double r127901 = r127898 + r127897;
double r127902 = sqrt(r127901);
double r127903 = r127897 / r127902;
double r127904 = r127900 - r127903;
return r127904;
}
double f(double x) {
double r127905 = 1.0;
double r127906 = 1.0;
double r127907 = x;
double r127908 = sqrt(r127907);
double r127909 = r127907 + r127905;
double r127910 = sqrt(r127909);
double r127911 = r127908 + r127910;
double r127912 = sqrt(r127911);
double r127913 = r127906 / r127912;
double r127914 = r127905 / r127912;
double r127915 = r127913 * r127914;
double r127916 = r127905 * r127915;
double r127917 = r127908 * r127910;
double r127918 = r127916 / r127917;
return r127918;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Simplified19.0
Simplified19.0
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019235
(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)))))