\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{\sqrt{\frac{1}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}}}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x + 1}} \cdot \frac{\sqrt{\frac{1}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}}}{\sqrt{x}}double f(double x) {
double r4387115 = 1.0;
double r4387116 = x;
double r4387117 = sqrt(r4387116);
double r4387118 = r4387115 / r4387117;
double r4387119 = r4387116 + r4387115;
double r4387120 = sqrt(r4387119);
double r4387121 = r4387115 / r4387120;
double r4387122 = r4387118 - r4387121;
return r4387122;
}
double f(double x) {
double r4387123 = 1.0;
double r4387124 = x;
double r4387125 = r4387124 + r4387123;
double r4387126 = sqrt(r4387125);
double r4387127 = sqrt(r4387124);
double r4387128 = r4387126 + r4387127;
double r4387129 = sqrt(r4387128);
double r4387130 = r4387123 / r4387129;
double r4387131 = sqrt(r4387130);
double r4387132 = r4387131 / r4387129;
double r4387133 = r4387132 / r4387126;
double r4387134 = r4387131 / r4387127;
double r4387135 = r4387133 * r4387134;
return r4387135;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.5 |
Initial program 19.3
rmApplied frac-sub19.3
Simplified19.3
rmApplied flip--19.1
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied associate-/r*0.4
rmApplied *-un-lft-identity0.4
Applied add-sqr-sqrt0.5
Applied times-frac0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019130
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))