\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 r134164 = 1.0;
double r134165 = x;
double r134166 = sqrt(r134165);
double r134167 = r134164 / r134166;
double r134168 = r134165 + r134164;
double r134169 = sqrt(r134168);
double r134170 = r134164 / r134169;
double r134171 = r134167 - r134170;
return r134171;
}
double f(double x) {
double r134172 = 1.0;
double r134173 = r134172 * r134172;
double r134174 = x;
double r134175 = sqrt(r134174);
double r134176 = r134172 / r134175;
double r134177 = r134174 + r134172;
double r134178 = sqrt(r134177);
double r134179 = r134172 / r134178;
double r134180 = r134176 + r134179;
double r134181 = r134180 * r134174;
double r134182 = r134181 * r134177;
double r134183 = r134173 / r134182;
return r134183;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.7 |
| Herbie | 0.8 |
Initial program 19.3
rmApplied flip--19.4
Simplified19.4
rmApplied frac-sub18.8
Applied associate-*r/18.8
Applied associate-/l/18.8
Taylor expanded around 0 5.4
rmApplied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2019350
(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)))))