\sqrt{x + 1} - \sqrt{x}\frac{1}{\left(\sqrt{\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}} \cdot \sqrt{\sqrt{\sqrt[3]{x + 1}}}\right) \cdot \sqrt{\sqrt{x + 1}} + \sqrt{x}}double f(double x) {
double r7750254 = x;
double r7750255 = 1.0;
double r7750256 = r7750254 + r7750255;
double r7750257 = sqrt(r7750256);
double r7750258 = sqrt(r7750254);
double r7750259 = r7750257 - r7750258;
return r7750259;
}
double f(double x) {
double r7750260 = 1.0;
double r7750261 = x;
double r7750262 = r7750261 + r7750260;
double r7750263 = cbrt(r7750262);
double r7750264 = r7750263 * r7750263;
double r7750265 = sqrt(r7750264);
double r7750266 = sqrt(r7750265);
double r7750267 = sqrt(r7750263);
double r7750268 = sqrt(r7750267);
double r7750269 = r7750266 * r7750268;
double r7750270 = sqrt(r7750262);
double r7750271 = sqrt(r7750270);
double r7750272 = r7750269 * r7750271;
double r7750273 = sqrt(r7750261);
double r7750274 = r7750272 + r7750273;
double r7750275 = r7750260 / r7750274;
return r7750275;
}




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 29.9
rmApplied flip--29.7
Taylor expanded around 0 0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.3
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied sqrt-prod0.3
Final simplification0.3
herbie shell --seed 2019120 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))