\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\frac{x}{1}} \cdot \frac{\frac{1}{x + 1}}{\frac{1}{\sqrt{x + 1}} + \frac{1}{\sqrt{x}}}double f(double x) {
double r6639319 = 1.0;
double r6639320 = x;
double r6639321 = sqrt(r6639320);
double r6639322 = r6639319 / r6639321;
double r6639323 = r6639320 + r6639319;
double r6639324 = sqrt(r6639323);
double r6639325 = r6639319 / r6639324;
double r6639326 = r6639322 - r6639325;
return r6639326;
}
double f(double x) {
double r6639327 = 1.0;
double r6639328 = x;
double r6639329 = r6639328 / r6639327;
double r6639330 = r6639327 / r6639329;
double r6639331 = r6639328 + r6639327;
double r6639332 = r6639327 / r6639331;
double r6639333 = sqrt(r6639331);
double r6639334 = r6639327 / r6639333;
double r6639335 = sqrt(r6639328);
double r6639336 = r6639327 / r6639335;
double r6639337 = r6639334 + r6639336;
double r6639338 = r6639332 / r6639337;
double r6639339 = r6639330 * r6639338;
return r6639339;
}




Bits error versus x
Results
| Original | 20.2 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 20.2
rmApplied flip--20.2
rmApplied frac-times25.4
Applied frac-times20.3
Applied frac-sub20.0
Simplified19.6
Simplified19.6
Taylor expanded around 0 5.6
rmApplied *-un-lft-identity5.6
Applied times-frac5.1
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019170 +o rules:numerics
(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)))))