\sqrt{x + 1} - \sqrt{x}{\left(\left(\sqrt{1 + x} + \sqrt{x}\right) \cdot \left(\sqrt{1 + x} + \sqrt{x}\right)\right)}^{\frac{-1}{2}}double f(double x) {
double r8168400 = x;
double r8168401 = 1.0;
double r8168402 = r8168400 + r8168401;
double r8168403 = sqrt(r8168402);
double r8168404 = sqrt(r8168400);
double r8168405 = r8168403 - r8168404;
return r8168405;
}
double f(double x) {
double r8168406 = 1.0;
double r8168407 = x;
double r8168408 = r8168406 + r8168407;
double r8168409 = sqrt(r8168408);
double r8168410 = sqrt(r8168407);
double r8168411 = r8168409 + r8168410;
double r8168412 = r8168411 * r8168411;
double r8168413 = -0.5;
double r8168414 = pow(r8168412, r8168413);
return r8168414;
}




Bits error versus x
Results
| Original | 29.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.1
rmApplied flip--28.9
Simplified0.2
rmApplied add-sqr-sqrt0.3
rmApplied inv-pow0.3
Applied sqrt-pow10.3
Applied inv-pow0.3
Applied sqrt-pow10.3
Applied pow-prod-down0.2
Final simplification0.2
herbie shell --seed 2019125 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))