\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \frac{1}{\sqrt{x} + \sqrt{x + 1}}}{\sqrt{x + 1} \cdot \sqrt{x}}double f(double x) {
double r6078941 = 1.0;
double r6078942 = x;
double r6078943 = sqrt(r6078942);
double r6078944 = r6078941 / r6078943;
double r6078945 = r6078942 + r6078941;
double r6078946 = sqrt(r6078945);
double r6078947 = r6078941 / r6078946;
double r6078948 = r6078944 - r6078947;
return r6078948;
}
double f(double x) {
double r6078949 = 1.0;
double r6078950 = x;
double r6078951 = sqrt(r6078950);
double r6078952 = r6078950 + r6078949;
double r6078953 = sqrt(r6078952);
double r6078954 = r6078951 + r6078953;
double r6078955 = r6078949 / r6078954;
double r6078956 = r6078949 * r6078955;
double r6078957 = r6078953 * r6078951;
double r6078958 = r6078956 / r6078957;
return r6078958;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 20.1
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.9
Simplified19.4
Taylor expanded around 0 0.4
rmApplied +-commutative0.4
Final simplification0.4
herbie shell --seed 2019192
(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)))))