\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \frac{1}{\sqrt{x + 1} + \sqrt{x}}}{\left(\sqrt{x} \cdot \left|\sqrt[3]{x + 1}\right|\right) \cdot \sqrt{\sqrt[3]{x + 1}}}double f(double x) {
double r177050 = 1.0;
double r177051 = x;
double r177052 = sqrt(r177051);
double r177053 = r177050 / r177052;
double r177054 = r177051 + r177050;
double r177055 = sqrt(r177054);
double r177056 = r177050 / r177055;
double r177057 = r177053 - r177056;
return r177057;
}
double f(double x) {
double r177058 = 1.0;
double r177059 = x;
double r177060 = r177059 + r177058;
double r177061 = sqrt(r177060);
double r177062 = sqrt(r177059);
double r177063 = r177061 + r177062;
double r177064 = r177058 / r177063;
double r177065 = r177058 * r177064;
double r177066 = cbrt(r177060);
double r177067 = fabs(r177066);
double r177068 = r177062 * r177067;
double r177069 = sqrt(r177066);
double r177070 = r177068 * r177069;
double r177071 = r177065 / r177070;
return r177071;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
Initial program 20.0
rmApplied frac-sub20.0
Simplified20.0
rmApplied flip--19.8
Simplified19.4
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.5
Applied associate-*r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020042 +o rules:numerics
(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)))))