\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \frac{1}{\sqrt{x} + \sqrt{x + 1}}}{\sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r9746153 = 1.0;
double r9746154 = x;
double r9746155 = sqrt(r9746154);
double r9746156 = r9746153 / r9746155;
double r9746157 = r9746154 + r9746153;
double r9746158 = sqrt(r9746157);
double r9746159 = r9746153 / r9746158;
double r9746160 = r9746156 - r9746159;
return r9746160;
}
double f(double x) {
double r9746161 = 1.0;
double r9746162 = x;
double r9746163 = sqrt(r9746162);
double r9746164 = r9746162 + r9746161;
double r9746165 = sqrt(r9746164);
double r9746166 = r9746163 + r9746165;
double r9746167 = r9746161 / r9746166;
double r9746168 = r9746161 * r9746167;
double r9746169 = r9746163 * r9746165;
double r9746170 = r9746168 / r9746169;
return r9746170;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Simplified19.1
Taylor expanded around 0 0.4
rmApplied +-commutative0.4
Final simplification0.4
herbie shell --seed 2019174
(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)))))