\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]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}\right)\right) \cdot \sqrt[3]{\sqrt{x + 1}}}double f(double x) {
double r153479 = 1.0;
double r153480 = x;
double r153481 = sqrt(r153480);
double r153482 = r153479 / r153481;
double r153483 = r153480 + r153479;
double r153484 = sqrt(r153483);
double r153485 = r153479 / r153484;
double r153486 = r153482 - r153485;
return r153486;
}
double f(double x) {
double r153487 = 1.0;
double r153488 = x;
double r153489 = r153488 + r153487;
double r153490 = sqrt(r153489);
double r153491 = sqrt(r153488);
double r153492 = r153490 + r153491;
double r153493 = r153487 / r153492;
double r153494 = r153487 * r153493;
double r153495 = cbrt(r153490);
double r153496 = r153495 * r153495;
double r153497 = r153491 * r153496;
double r153498 = r153497 * r153495;
double r153499 = r153494 / r153498;
return r153499;
}




Bits error versus x
Results
| Original | 20.2 |
|---|---|
| Target | 0.7 |
| Herbie | 0.6 |
Initial program 20.2
rmApplied frac-sub20.2
Simplified20.2
rmApplied flip--19.9
Simplified19.5
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020060
(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)))))