\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\left(\sqrt{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x + 1}}} \cdot \sqrt{\frac{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\sqrt{x + 1}}}\right) \cdot \frac{1}{\sqrt{x}}double f(double x) {
double r2247556 = 1.0;
double r2247557 = x;
double r2247558 = sqrt(r2247557);
double r2247559 = r2247556 / r2247558;
double r2247560 = r2247557 + r2247556;
double r2247561 = sqrt(r2247560);
double r2247562 = r2247556 / r2247561;
double r2247563 = r2247559 - r2247562;
return r2247563;
}
double f(double x) {
double r2247564 = 1.0;
double r2247565 = x;
double r2247566 = r2247565 + r2247564;
double r2247567 = sqrt(r2247566);
double r2247568 = sqrt(r2247565);
double r2247569 = r2247567 + r2247568;
double r2247570 = r2247564 / r2247569;
double r2247571 = r2247570 / r2247567;
double r2247572 = sqrt(r2247571);
double r2247573 = r2247572 * r2247572;
double r2247574 = r2247564 / r2247568;
double r2247575 = r2247573 * r2247574;
return r2247575;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.3
rmApplied frac-sub19.3
Simplified19.3
rmApplied flip--19.0
Simplified18.6
rmApplied div-inv18.6
Applied times-frac18.6
Simplified0.4
rmApplied add-sqr-sqrt0.4
Final simplification0.4
herbie shell --seed 2019156 +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)))))