\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\sqrt{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x + 1}} \cdot \frac{\sqrt{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x}}double f(double x) {
double r3848575 = 1.0;
double r3848576 = x;
double r3848577 = sqrt(r3848576);
double r3848578 = r3848575 / r3848577;
double r3848579 = r3848576 + r3848575;
double r3848580 = sqrt(r3848579);
double r3848581 = r3848575 / r3848580;
double r3848582 = r3848578 - r3848581;
return r3848582;
}
double f(double x) {
double r3848583 = 1.0;
double r3848584 = x;
double r3848585 = r3848584 + r3848583;
double r3848586 = sqrt(r3848585);
double r3848587 = sqrt(r3848584);
double r3848588 = r3848586 + r3848587;
double r3848589 = r3848583 / r3848588;
double r3848590 = sqrt(r3848589);
double r3848591 = r3848590 / r3848586;
double r3848592 = r3848590 / r3848587;
double r3848593 = r3848591 * r3848592;
return r3848593;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.4
Simplified18.9
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.4
Applied times-frac0.4
Final simplification0.4
herbie shell --seed 2019163
(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)))))