\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{x + 1}}{\left(\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}\right) \cdot x}double f(double x) {
double r1944160 = 1.0;
double r1944161 = x;
double r1944162 = sqrt(r1944161);
double r1944163 = r1944160 / r1944162;
double r1944164 = r1944161 + r1944160;
double r1944165 = sqrt(r1944164);
double r1944166 = r1944160 / r1944165;
double r1944167 = r1944163 - r1944166;
return r1944167;
}
double f(double x) {
double r1944168 = 1.0;
double r1944169 = x;
double r1944170 = r1944169 + r1944168;
double r1944171 = r1944168 / r1944170;
double r1944172 = sqrt(r1944169);
double r1944173 = r1944168 / r1944172;
double r1944174 = sqrt(r1944170);
double r1944175 = r1944168 / r1944174;
double r1944176 = r1944173 + r1944175;
double r1944177 = r1944176 * r1944169;
double r1944178 = r1944171 / r1944177;
return r1944178;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.3
rmApplied flip--19.3
rmApplied frac-times24.6
Applied frac-times19.4
Applied frac-sub19.2
Simplified18.8
Simplified18.7
Taylor expanded around 0 5.5
rmApplied *-un-lft-identity5.5
Applied times-frac5.2
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019156
(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)))))