\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 r143117 = 1.0;
double r143118 = x;
double r143119 = sqrt(r143118);
double r143120 = r143117 / r143119;
double r143121 = r143118 + r143117;
double r143122 = sqrt(r143121);
double r143123 = r143117 / r143122;
double r143124 = r143120 - r143123;
return r143124;
}
double f(double x) {
double r143125 = 1.0;
double r143126 = x;
double r143127 = r143126 + r143125;
double r143128 = sqrt(r143127);
double r143129 = sqrt(r143126);
double r143130 = r143128 + r143129;
double r143131 = r143125 / r143130;
double r143132 = r143125 * r143131;
double r143133 = cbrt(r143128);
double r143134 = r143133 * r143133;
double r143135 = r143129 * r143134;
double r143136 = r143135 * r143133;
double r143137 = r143132 / r143136;
return r143137;
}




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)))))