\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 r130119 = 1.0;
double r130120 = x;
double r130121 = sqrt(r130120);
double r130122 = r130119 / r130121;
double r130123 = r130120 + r130119;
double r130124 = sqrt(r130123);
double r130125 = r130119 / r130124;
double r130126 = r130122 - r130125;
return r130126;
}
double f(double x) {
double r130127 = 1.0;
double r130128 = r130127 * r130127;
double r130129 = x;
double r130130 = sqrt(r130129);
double r130131 = r130127 / r130130;
double r130132 = r130129 + r130127;
double r130133 = sqrt(r130132);
double r130134 = r130127 / r130133;
double r130135 = r130131 + r130134;
double r130136 = r130135 * r130129;
double r130137 = r130136 * r130132;
double r130138 = r130128 / r130137;
return r130138;
}




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)))))