\sqrt{x + 1} - \sqrt{x}\frac{1}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x} \cdot \sqrt[3]{x}}, \sqrt{\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}}, \sqrt{x + 1}\right)}double f(double x) {
double r94721 = x;
double r94722 = 1.0;
double r94723 = r94721 + r94722;
double r94724 = sqrt(r94723);
double r94725 = sqrt(r94721);
double r94726 = r94724 - r94725;
return r94726;
}
double f(double x) {
double r94727 = 1.0;
double r94728 = x;
double r94729 = cbrt(r94728);
double r94730 = r94729 * r94729;
double r94731 = sqrt(r94730);
double r94732 = sqrt(r94728);
double r94733 = cbrt(r94732);
double r94734 = r94733 * r94733;
double r94735 = sqrt(r94734);
double r94736 = r94728 + r94727;
double r94737 = sqrt(r94736);
double r94738 = fma(r94731, r94735, r94737);
double r94739 = r94727 / r94738;
return r94739;
}




Bits error versus x
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.0
rmApplied flip--29.7
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied fma-def0.3
rmApplied add-sqr-sqrt0.3
Applied cbrt-prod0.3
Final simplification0.3
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))