\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 r5841583 = x;
double r5841584 = 1.0;
double r5841585 = r5841583 + r5841584;
double r5841586 = sqrt(r5841585);
double r5841587 = sqrt(r5841583);
double r5841588 = r5841586 - r5841587;
return r5841588;
}
double f(double x) {
double r5841589 = 1.0;
double r5841590 = x;
double r5841591 = sqrt(r5841590);
double r5841592 = sqrt(r5841591);
double r5841593 = r5841589 + r5841590;
double r5841594 = sqrt(r5841593);
double r5841595 = fma(r5841592, r5841592, r5841594);
double r5841596 = r5841589 / r5841595;
return r5841596;
}




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)))