\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot \frac{1}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}, \sqrt{\sqrt[3]{x + 1}}, \sqrt{x}\right)}}{\sqrt{x} \cdot \sqrt{x + 1}}double f(double x) {
double r157583 = 1.0;
double r157584 = x;
double r157585 = sqrt(r157584);
double r157586 = r157583 / r157585;
double r157587 = r157584 + r157583;
double r157588 = sqrt(r157587);
double r157589 = r157583 / r157588;
double r157590 = r157586 - r157589;
return r157590;
}
double f(double x) {
double r157591 = 1.0;
double r157592 = x;
double r157593 = r157592 + r157591;
double r157594 = cbrt(r157593);
double r157595 = r157594 * r157594;
double r157596 = sqrt(r157595);
double r157597 = sqrt(r157594);
double r157598 = sqrt(r157592);
double r157599 = fma(r157596, r157597, r157598);
double r157600 = r157591 / r157599;
double r157601 = r157591 * r157600;
double r157602 = sqrt(r157593);
double r157603 = r157598 * r157602;
double r157604 = r157601 / r157603;
return r157604;
}




Bits error versus x
| Original | 19.4 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.4
rmApplied frac-sub19.4
Simplified19.4
rmApplied flip--19.2
Simplified18.8
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.4
Applied sqrt-prod0.4
Applied fma-def0.4
Final simplification0.4
herbie shell --seed 2020039 +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)))))