\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 r143152 = 1.0;
double r143153 = x;
double r143154 = sqrt(r143153);
double r143155 = r143152 / r143154;
double r143156 = r143153 + r143152;
double r143157 = sqrt(r143156);
double r143158 = r143152 / r143157;
double r143159 = r143155 - r143158;
return r143159;
}
double f(double x) {
double r143160 = 1.0;
double r143161 = sqrt(r143160);
double r143162 = x;
double r143163 = r143162 + r143160;
double r143164 = sqrt(r143163);
double r143165 = sqrt(r143162);
double r143166 = r143164 + r143165;
double r143167 = sqrt(r143166);
double r143168 = r143161 / r143167;
double r143169 = r143168 * r143168;
double r143170 = r143160 * r143169;
double r143171 = r143165 * r143164;
double r143172 = r143170 / r143171;
return r143172;
}




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