double f(double x) {
double r4347124 = 1.0;
double r4347125 = x;
double r4347126 = sqrt(r4347125);
double r4347127 = r4347124 / r4347126;
double r4347128 = r4347125 + r4347124;
double r4347129 = sqrt(r4347128);
double r4347130 = r4347124 / r4347129;
double r4347131 = r4347127 - r4347130;
return r4347131;
}
double f(double x) {
double r4347132 = 1.0;
double r4347133 = x;
double r4347134 = sqrt(r4347133);
double r4347135 = r4347132 / r4347134;
double r4347136 = r4347133 + r4347132;
double r4347137 = sqrt(r4347136);
double r4347138 = r4347132 / r4347137;
double r4347139 = r4347135 + r4347138;
double r4347140 = r4347135 - r4347138;
double r4347141 = r4347139 * r4347140;
double r4347142 = r4347141 / r4347139;
return r4347142;
}
\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\left(\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}\right) \cdot \left(\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\right)}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}


Bits error versus x
Initial program 0.6
rmApplied p16-flip--0.7
rmApplied difference-of-squares0.6
Final simplification0.6
herbie shell --seed 2019102 +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))))))