\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot 1}{x + \sqrt{x} \cdot \sqrt{x + 1}}}{\sqrt{x + 1}}double f(double x) {
double r145585 = 1.0;
double r145586 = x;
double r145587 = sqrt(r145586);
double r145588 = r145585 / r145587;
double r145589 = r145586 + r145585;
double r145590 = sqrt(r145589);
double r145591 = r145585 / r145590;
double r145592 = r145588 - r145591;
return r145592;
}
double f(double x) {
double r145593 = 1.0;
double r145594 = r145593 * r145593;
double r145595 = x;
double r145596 = sqrt(r145595);
double r145597 = r145595 + r145593;
double r145598 = sqrt(r145597);
double r145599 = r145596 * r145598;
double r145600 = r145595 + r145599;
double r145601 = r145594 / r145600;
double r145602 = r145601 / r145598;
return r145602;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.3 |
Initial program 20.0
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.7
Simplified19.3
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020047
(FPCore (x)
:name "2isqrt (example 3.6)"
:precision binary64
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))