\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\left(\sqrt{x + 1} \cdot \sqrt{x + 1} + \left(\sqrt{x} \cdot \sqrt{x} - \sqrt{x} \cdot \sqrt{x + 1}\right)\right) \cdot \frac{1}{\sqrt{x} \cdot x + \left(x + 1\right) \cdot \sqrt{x + 1}}}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r4724236 = 1.0;
double r4724237 = x;
double r4724238 = sqrt(r4724237);
double r4724239 = r4724236 / r4724238;
double r4724240 = r4724237 + r4724236;
double r4724241 = sqrt(r4724240);
double r4724242 = r4724236 / r4724241;
double r4724243 = r4724239 - r4724242;
return r4724243;
}
double f(double x) {
double r4724244 = x;
double r4724245 = 1.0;
double r4724246 = r4724244 + r4724245;
double r4724247 = sqrt(r4724246);
double r4724248 = r4724247 * r4724247;
double r4724249 = sqrt(r4724244);
double r4724250 = r4724249 * r4724249;
double r4724251 = r4724249 * r4724247;
double r4724252 = r4724250 - r4724251;
double r4724253 = r4724248 + r4724252;
double r4724254 = r4724249 * r4724244;
double r4724255 = r4724246 * r4724247;
double r4724256 = r4724254 + r4724255;
double r4724257 = r4724245 / r4724256;
double r4724258 = r4724253 * r4724257;
double r4724259 = r4724247 * r4724249;
double r4724260 = r4724258 / r4724259;
return r4724260;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.7 |
Initial program 20.1
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.8
Simplified0.4
rmApplied flip3-+0.8
Applied associate-/r/0.8
Simplified0.7
Final simplification0.7
herbie shell --seed 2019151
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))