\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 r111108 = 1.0;
double r111109 = x;
double r111110 = sqrt(r111109);
double r111111 = r111108 / r111110;
double r111112 = r111109 + r111108;
double r111113 = sqrt(r111112);
double r111114 = r111108 / r111113;
double r111115 = r111111 - r111114;
return r111115;
}
double f(double x) {
double r111116 = 1.0;
double r111117 = r111116 * r111116;
double r111118 = x;
double r111119 = sqrt(r111118);
double r111120 = r111116 / r111119;
double r111121 = r111118 + r111116;
double r111122 = sqrt(r111121);
double r111123 = r111116 / r111122;
double r111124 = r111120 + r111123;
double r111125 = r111124 * r111118;
double r111126 = r111125 * r111121;
double r111127 = r111117 / r111126;
return r111127;
}




Bits error versus x
Results
| Original | 19.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.7 |
Initial program 19.4
rmApplied flip--19.5
Simplified19.5
rmApplied frac-sub18.9
Applied associate-*r/18.9
Applied associate-/l/18.9
Taylor expanded around 0 5.1
rmApplied associate-*r*0.7
Final simplification0.7
herbie shell --seed 2019303
(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)))))