\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\mathsf{fma}\left(\left(\sqrt{x}\right), \left(\sqrt{x + 1}\right), x\right)}}{\sqrt{x + 1}}double f(double x) {
double r20353474 = 1.0;
double r20353475 = x;
double r20353476 = sqrt(r20353475);
double r20353477 = r20353474 / r20353476;
double r20353478 = r20353475 + r20353474;
double r20353479 = sqrt(r20353478);
double r20353480 = r20353474 / r20353479;
double r20353481 = r20353477 - r20353480;
return r20353481;
}
double f(double x) {
double r20353482 = 1.0;
double r20353483 = x;
double r20353484 = sqrt(r20353483);
double r20353485 = r20353483 + r20353482;
double r20353486 = sqrt(r20353485);
double r20353487 = fma(r20353484, r20353486, r20353483);
double r20353488 = r20353482 / r20353487;
double r20353489 = r20353488 / r20353486;
return r20353489;
}




Bits error versus x
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.3 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Simplified0.4
rmApplied associate-/r*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019128 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))