double f(double x) {
double r3114581 = 1.0;
double r3114582 = x;
double r3114583 = sqrt(r3114582);
double r3114584 = r3114581 / r3114583;
double r3114585 = r3114582 + r3114581;
double r3114586 = sqrt(r3114585);
double r3114587 = r3114581 / r3114586;
double r3114588 = r3114584 - r3114587;
return r3114588;
}
double f(double x) {
double r3114589 = 1.0;
double r3114590 = x;
double r3114591 = sqrt(r3114590);
double r3114592 = r3114589 / r3114591;
double r3114593 = r3114592 * r3114592;
double r3114594 = r3114589 * r3114589;
double r3114595 = r3114590 + r3114589;
double r3114596 = sqrt(r3114595);
double r3114597 = r3114596 * r3114596;
double r3114598 = r3114594 / r3114597;
double r3114599 = r3114593 - r3114598;
double r3114600 = r3114589 / r3114596;
double r3114601 = r3114592 + r3114600;
double r3114602 = r3114599 / r3114601;
return r3114602;
}
\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
(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))))))