\sqrt{x + 1} - \sqrt{x}\frac{\left(1\right)}{\sqrt{x + 1} + \sqrt{x}}double f(double x) {
double r3175327 = x;
double r3175328 = 1.0;
double r3175329 = r3175327 + r3175328;
double r3175330 = sqrt(r3175329);
double r3175331 = sqrt(r3175327);
double r3175332 = r3175330 - r3175331;
return r3175332;
}
double f(double x) {
double r3175333 = 1.0;
double r3175334 = /* ERROR: no posit support in C */;
double r3175335 = /* ERROR: no posit support in C */;
double r3175336 = x;
double r3175337 = r3175336 + r3175333;
double r3175338 = sqrt(r3175337);
double r3175339 = sqrt(r3175336);
double r3175340 = r3175338 + r3175339;
double r3175341 = r3175335 / r3175340;
return r3175341;
}




Bits error versus x
| Original | 29.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.3
rmApplied flip--29.1
Simplified28.8
Simplified28.8
rmApplied insert-posit1628.8
Simplified0.2
Final simplification0.2
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))