\sqrt{x + 1} - \sqrt{x}\frac{1}{\mathsf{fma}\left(\sqrt{\sqrt{x}}, \sqrt{\sqrt{x}}, \sqrt{1 + x}\right)}double f(double x) {
double r23653704 = x;
double r23653705 = 1.0;
double r23653706 = r23653704 + r23653705;
double r23653707 = sqrt(r23653706);
double r23653708 = sqrt(r23653704);
double r23653709 = r23653707 - r23653708;
return r23653709;
}
double f(double x) {
double r23653710 = 1.0;
double r23653711 = x;
double r23653712 = sqrt(r23653711);
double r23653713 = sqrt(r23653712);
double r23653714 = r23653710 + r23653711;
double r23653715 = sqrt(r23653714);
double r23653716 = fma(r23653713, r23653713, r23653715);
double r23653717 = r23653710 / r23653716;
return r23653717;
}




Bits error versus x
| Original | 29.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.5
rmApplied flip--29.4
Simplified28.9
Simplified28.9
rmApplied *-un-lft-identity28.9
Applied associate-/r*28.9
Simplified0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2019200 +o rules:numerics
(FPCore (x)
:name "Main:bigenough3 from C"
:herbie-target
(/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))
(- (sqrt (+ x 1.0)) (sqrt x)))