\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot 1}{x}}{1} \cdot \frac{\frac{1}{x + 1}}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}double f(double x) {
double r129990 = 1.0;
double r129991 = x;
double r129992 = sqrt(r129991);
double r129993 = r129990 / r129992;
double r129994 = r129991 + r129990;
double r129995 = sqrt(r129994);
double r129996 = r129990 / r129995;
double r129997 = r129993 - r129996;
return r129997;
}
double f(double x) {
double r129998 = 1.0;
double r129999 = r129998 * r129998;
double r130000 = x;
double r130001 = r129999 / r130000;
double r130002 = r130001 / r129998;
double r130003 = r130000 + r129998;
double r130004 = r129998 / r130003;
double r130005 = 1.0;
double r130006 = sqrt(r130000);
double r130007 = r130005 / r130006;
double r130008 = sqrt(r130003);
double r130009 = r130005 / r130008;
double r130010 = r130007 + r130009;
double r130011 = r130004 / r130010;
double r130012 = r130002 * r130011;
return r130012;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.4
rmApplied flip--19.4
rmApplied frac-times24.6
Applied frac-times19.5
Applied frac-sub19.3
Simplified18.9
Simplified18.9
Taylor expanded around 0 5.6
rmApplied div-inv5.6
Applied div-inv5.6
Applied distribute-lft-out5.6
Applied times-frac5.2
Applied times-frac0.4
Final simplification0.4
herbie shell --seed 2019305
(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)))))