\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 r5126618 = x;
double r5126619 = 1.0;
double r5126620 = r5126618 + r5126619;
double r5126621 = sqrt(r5126620);
double r5126622 = sqrt(r5126618);
double r5126623 = r5126621 - r5126622;
return r5126623;
}
double f(double x) {
double r5126624 = 1.0;
double r5126625 = x;
double r5126626 = sqrt(r5126625);
double r5126627 = sqrt(r5126626);
double r5126628 = r5126624 + r5126625;
double r5126629 = sqrt(r5126628);
double r5126630 = fma(r5126627, r5126627, r5126629);
double r5126631 = r5126624 / r5126630;
return r5126631;
}




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 "2sqrt (example 3.1)"
:herbie-target
(/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))
(- (sqrt (+ x 1.0)) (sqrt x)))