\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt{x + 1} \cdot \sqrt{x}}}{\sqrt{x + 1} \cdot 1 + 1 \cdot \sqrt{x}}double f(double x) {
double r6984339 = 1.0;
double r6984340 = x;
double r6984341 = sqrt(r6984340);
double r6984342 = r6984339 / r6984341;
double r6984343 = r6984340 + r6984339;
double r6984344 = sqrt(r6984343);
double r6984345 = r6984339 / r6984344;
double r6984346 = r6984342 - r6984345;
return r6984346;
}
double f(double x) {
double r6984347 = 1.0;
double r6984348 = x;
double r6984349 = r6984348 + r6984347;
double r6984350 = sqrt(r6984349);
double r6984351 = sqrt(r6984348);
double r6984352 = r6984350 * r6984351;
double r6984353 = r6984347 / r6984352;
double r6984354 = r6984350 * r6984347;
double r6984355 = r6984347 * r6984351;
double r6984356 = r6984354 + r6984355;
double r6984357 = r6984353 / r6984356;
return r6984357;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 20.0
rmApplied frac-sub20.0
rmApplied flip--19.8
Applied associate-/l/19.8
Taylor expanded around 0 0.8
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2019169
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1.0 (+ (* (+ x 1.0) (sqrt x)) (* x (sqrt (+ x 1.0)))))
(- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))))