\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1}{\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}} \cdot \sqrt{x}\right) \cdot \sqrt{\sqrt[3]{x + 1}}} \cdot \frac{1}{\sqrt{x} + \sqrt{x + 1}}double f(double x) {
double r11962772 = 1.0;
double r11962773 = x;
double r11962774 = sqrt(r11962773);
double r11962775 = r11962772 / r11962774;
double r11962776 = r11962773 + r11962772;
double r11962777 = sqrt(r11962776);
double r11962778 = r11962772 / r11962777;
double r11962779 = r11962775 - r11962778;
return r11962779;
}
double f(double x) {
double r11962780 = 1.0;
double r11962781 = x;
double r11962782 = r11962781 + r11962780;
double r11962783 = cbrt(r11962782);
double r11962784 = r11962783 * r11962783;
double r11962785 = sqrt(r11962784);
double r11962786 = sqrt(r11962781);
double r11962787 = r11962785 * r11962786;
double r11962788 = sqrt(r11962783);
double r11962789 = r11962787 * r11962788;
double r11962790 = r11962780 / r11962789;
double r11962791 = sqrt(r11962782);
double r11962792 = r11962786 + r11962791;
double r11962793 = r11962780 / r11962792;
double r11962794 = r11962790 * r11962793;
return r11962794;
}




Bits error versus x
Results
| Original | 19.8 |
|---|---|
| Target | 0.6 |
| Herbie | 0.5 |
Initial program 19.8
rmApplied frac-sub19.7
Simplified19.7
rmApplied flip--19.5
Applied associate-/l/19.5
Simplified0.8
rmApplied *-un-lft-identity0.8
Applied times-frac0.4
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019120 +o rules:numerics
(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)))))