double f(double x) {
double r3898227 = 1.0;
double r3898228 = x;
double r3898229 = sqrt(r3898228);
double r3898230 = r3898227 / r3898229;
double r3898231 = r3898228 + r3898227;
double r3898232 = sqrt(r3898231);
double r3898233 = r3898227 / r3898232;
double r3898234 = r3898230 - r3898233;
return r3898234;
}
double f(double x) {
double r3898235 = 1.0;
double r3898236 = x;
double r3898237 = sqrt(r3898236);
double r3898238 = r3898235 / r3898237;
double r3898239 = r3898238 * r3898238;
double r3898240 = r3898235 * r3898235;
double r3898241 = r3898236 + r3898235;
double r3898242 = sqrt(r3898241);
double r3898243 = r3898242 * r3898242;
double r3898244 = r3898240 / r3898243;
double r3898245 = r3898239 - r3898244;
double r3898246 = r3898235 / r3898242;
double r3898247 = r3898238 + r3898246;
double r3898248 = r3898245 / r3898247;
return r3898248;
}
\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{\sqrt{x}} \cdot \frac{1}{\sqrt{x}} - \frac{1 \cdot 1}{\sqrt{x + 1} \cdot \sqrt{x + 1}}}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}


Bits error versus x
Initial program 0.6
rmApplied p16-flip--0.7
rmApplied associate-*r/0.7
rmApplied associate-*l/0.7
Applied associate-/l/0.6
Final simplification0.6
herbie shell --seed 2019101 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
(-.p16 (/.p16 (real->posit16 1) (sqrt.p16 x)) (/.p16 (real->posit16 1) (sqrt.p16 (+.p16 x (real->posit16 1))))))