\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 r111054 = 1.0;
double r111055 = x;
double r111056 = sqrt(r111055);
double r111057 = r111054 / r111056;
double r111058 = r111055 + r111054;
double r111059 = sqrt(r111058);
double r111060 = r111054 / r111059;
double r111061 = r111057 - r111060;
return r111061;
}
double f(double x) {
double r111062 = 1.0;
double r111063 = r111062 * r111062;
double r111064 = x;
double r111065 = sqrt(r111064);
double r111066 = r111062 / r111065;
double r111067 = r111064 + r111062;
double r111068 = sqrt(r111067);
double r111069 = r111062 / r111068;
double r111070 = r111066 + r111069;
double r111071 = r111070 * r111064;
double r111072 = r111071 * r111067;
double r111073 = r111063 / r111072;
return r111073;
}




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