\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt[3]{\sqrt{x + 1} + \sqrt{x}} \cdot \sqrt[3]{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x}} \cdot \frac{\frac{1 + \left(x - x\right)}{\sqrt[3]{\sqrt{x + 1} + \sqrt{x}}}}{\sqrt{x + 1}}double f(double x) {
double r3085116 = 1.0;
double r3085117 = x;
double r3085118 = sqrt(r3085117);
double r3085119 = r3085116 / r3085118;
double r3085120 = r3085117 + r3085116;
double r3085121 = sqrt(r3085120);
double r3085122 = r3085116 / r3085121;
double r3085123 = r3085119 - r3085122;
return r3085123;
}
double f(double x) {
double r3085124 = 1.0;
double r3085125 = x;
double r3085126 = r3085125 + r3085124;
double r3085127 = sqrt(r3085126);
double r3085128 = sqrt(r3085125);
double r3085129 = r3085127 + r3085128;
double r3085130 = cbrt(r3085129);
double r3085131 = r3085130 * r3085130;
double r3085132 = r3085124 / r3085131;
double r3085133 = r3085132 / r3085128;
double r3085134 = r3085125 - r3085125;
double r3085135 = r3085124 + r3085134;
double r3085136 = r3085135 / r3085130;
double r3085137 = r3085136 / r3085127;
double r3085138 = r3085133 * r3085137;
return r3085138;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.6 |
Initial program 19.3
rmApplied frac-sub19.3
Simplified19.3
rmApplied flip--19.1
Simplified0.4
rmApplied add-cube-cbrt0.6
Applied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied distribute-lft-out0.6
Applied times-frac0.6
Applied times-frac0.6
Final simplification0.6
herbie shell --seed 2019133 +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)))))