\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\left(\left(\sqrt{x + 1} \cdot \sqrt{x + 1} - \sqrt{x + 1} \cdot \sqrt{x}\right) + \sqrt{x} \cdot \sqrt{x}\right) \cdot \frac{1}{\sqrt{x} \cdot x + \left(x + 1\right) \cdot \sqrt{x + 1}}}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r5124502 = 1.0;
double r5124503 = x;
double r5124504 = sqrt(r5124503);
double r5124505 = r5124502 / r5124504;
double r5124506 = r5124503 + r5124502;
double r5124507 = sqrt(r5124506);
double r5124508 = r5124502 / r5124507;
double r5124509 = r5124505 - r5124508;
return r5124509;
}
double f(double x) {
double r5124510 = x;
double r5124511 = 1.0;
double r5124512 = r5124510 + r5124511;
double r5124513 = sqrt(r5124512);
double r5124514 = r5124513 * r5124513;
double r5124515 = sqrt(r5124510);
double r5124516 = r5124513 * r5124515;
double r5124517 = r5124514 - r5124516;
double r5124518 = r5124515 * r5124515;
double r5124519 = r5124517 + r5124518;
double r5124520 = r5124515 * r5124510;
double r5124521 = r5124512 * r5124513;
double r5124522 = r5124520 + r5124521;
double r5124523 = r5124511 / r5124522;
double r5124524 = r5124519 * r5124523;
double r5124525 = r5124524 / r5124516;
return r5124525;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.6 |
| Herbie | 0.6 |
Initial program 20.1
rmApplied frac-sub20.0
rmApplied flip--19.8
Simplified19.4
Simplified19.4
rmApplied flip3-+19.4
Applied associate-/r/19.4
Simplified0.6
Final simplification0.6
herbie shell --seed 2019162
(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)))))