\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x}} - \frac{1}{\mathsf{hypot}\left(\sqrt{x}, \sqrt{1}\right)}double f(double x) {
double r334819 = 1.0;
double r334820 = x;
double r334821 = sqrt(r334820);
double r334822 = r334819 / r334821;
double r334823 = r334820 + r334819;
double r334824 = sqrt(r334823);
double r334825 = r334819 / r334824;
double r334826 = r334822 - r334825;
return r334826;
}
double f(double x) {
double r334827 = 1.0;
double r334828 = x;
double r334829 = sqrt(r334828);
double r334830 = r334827 / r334829;
double r334831 = sqrt(r334827);
double r334832 = hypot(r334829, r334831);
double r334833 = r334827 / r334832;
double r334834 = r334830 - r334833;
return r334834;
}




Bits error versus x
Results
| Original | 19.8 |
|---|---|
| Target | 0.8 |
| Herbie | 19.8 |
Initial program 19.8
rmApplied add-sqr-sqrt19.8
Applied add-sqr-sqrt19.8
Applied hypot-def19.8
Final simplification19.8
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1.0 (+ (* (+ x 1.0) (sqrt x)) (* x (sqrt (+ x 1.0)))))
(- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))))