\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}1 \cdot \frac{\frac{\frac{1}{\sqrt{x + 1}}}{\sqrt{x}}}{1 \cdot \left(\sqrt{x} + \sqrt{x + 1}\right)}double f(double x) {
double r5795946 = 1.0;
double r5795947 = x;
double r5795948 = sqrt(r5795947);
double r5795949 = r5795946 / r5795948;
double r5795950 = r5795947 + r5795946;
double r5795951 = sqrt(r5795950);
double r5795952 = r5795946 / r5795951;
double r5795953 = r5795949 - r5795952;
return r5795953;
}
double f(double x) {
double r5795954 = 1.0;
double r5795955 = 1.0;
double r5795956 = x;
double r5795957 = r5795956 + r5795954;
double r5795958 = sqrt(r5795957);
double r5795959 = r5795955 / r5795958;
double r5795960 = sqrt(r5795956);
double r5795961 = r5795959 / r5795960;
double r5795962 = r5795960 + r5795958;
double r5795963 = r5795954 * r5795962;
double r5795964 = r5795961 / r5795963;
double r5795965 = r5795954 * r5795964;
return r5795965;
}




Bits error versus x
Results
| Original | 19.9 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.9
rmApplied frac-sub19.9
rmApplied flip--19.7
Applied associate-/l/19.7
Taylor expanded around 0 0.8
rmApplied div-inv0.8
Simplified0.4
Final simplification0.4
herbie shell --seed 2019200 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1.0 (+ (* (+ x 1.0) (sqrt x)) (* x (sqrt (+ x 1.0)))))
(- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))))