\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\sqrt{x}} - \frac{1}{\mathsf{hypot}\left(\sqrt{x}, 1\right)}double f(double x) {
double r4213566 = 1.0;
double r4213567 = x;
double r4213568 = sqrt(r4213567);
double r4213569 = r4213566 / r4213568;
double r4213570 = r4213567 + r4213566;
double r4213571 = sqrt(r4213570);
double r4213572 = r4213566 / r4213571;
double r4213573 = r4213569 - r4213572;
return r4213573;
}
double f(double x) {
double r4213574 = 1.0;
double r4213575 = x;
double r4213576 = sqrt(r4213575);
double r4213577 = r4213574 / r4213576;
double r4213578 = hypot(r4213576, r4213574);
double r4213579 = r4213574 / r4213578;
double r4213580 = r4213577 - r4213579;
return r4213580;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.8 |
| Herbie | 19.7 |
Initial program 19.7
rmApplied *-un-lft-identity19.7
Applied add-sqr-sqrt19.7
Applied hypot-def19.7
Final simplification19.7
herbie shell --seed 2019144 +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)))))