\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot 1}{\left(\left(\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}\right) \cdot x\right) \cdot \left(x + 1\right)}double f(double x) {
double r143994 = 1.0;
double r143995 = x;
double r143996 = sqrt(r143995);
double r143997 = r143994 / r143996;
double r143998 = r143995 + r143994;
double r143999 = sqrt(r143998);
double r144000 = r143994 / r143999;
double r144001 = r143997 - r144000;
return r144001;
}
double f(double x) {
double r144002 = 1.0;
double r144003 = r144002 * r144002;
double r144004 = x;
double r144005 = sqrt(r144004);
double r144006 = r144002 / r144005;
double r144007 = r144004 + r144002;
double r144008 = sqrt(r144007);
double r144009 = r144002 / r144008;
double r144010 = r144006 + r144009;
double r144011 = r144010 * r144004;
double r144012 = r144011 * r144007;
double r144013 = r144003 / r144012;
return r144013;
}




Bits error versus x
Results
| Original | 19.6 |
|---|---|
| Target | 0.7 |
| Herbie | 0.8 |
Initial program 19.6
rmApplied flip--19.7
Simplified19.7
rmApplied frac-sub19.0
Applied associate-*r/19.0
Applied associate-/l/19.0
Taylor expanded around 0 5.3
rmApplied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2019325
(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)))))