\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 r94864 = 1.0;
double r94865 = x;
double r94866 = sqrt(r94865);
double r94867 = r94864 / r94866;
double r94868 = r94865 + r94864;
double r94869 = sqrt(r94868);
double r94870 = r94864 / r94869;
double r94871 = r94867 - r94870;
return r94871;
}
double f(double x) {
double r94872 = 1.0;
double r94873 = r94872 * r94872;
double r94874 = x;
double r94875 = sqrt(r94874);
double r94876 = r94872 / r94875;
double r94877 = r94874 + r94872;
double r94878 = sqrt(r94877);
double r94879 = r94872 / r94878;
double r94880 = r94876 + r94879;
double r94881 = r94880 * r94874;
double r94882 = r94881 * r94877;
double r94883 = r94873 / r94882;
return r94883;
}




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