\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\begin{array}{l}
\mathbf{if}\;x \le 138832.0855285687721334397792816162109375:\\
\;\;\;\;\sqrt{\frac{\left(1 \cdot 1\right) \cdot \left(\left(x + 1\right) - x\right)}{\left(x + 1\right) \cdot x}} \cdot \frac{\sqrt{\frac{\left(1 \cdot 1\right) \cdot \left(\left(x + 1\right) - x\right)}{\left(x + 1\right) \cdot x}}}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\left(\frac{1}{{x}^{2}} + \frac{1}{{x}^{4}}\right) - \frac{1}{{x}^{3}}\right)}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}\\
\end{array}double f(double x) {
double r131847 = 1.0;
double r131848 = x;
double r131849 = sqrt(r131848);
double r131850 = r131847 / r131849;
double r131851 = r131848 + r131847;
double r131852 = sqrt(r131851);
double r131853 = r131847 / r131852;
double r131854 = r131850 - r131853;
return r131854;
}
double f(double x) {
double r131855 = x;
double r131856 = 138832.08552856877;
bool r131857 = r131855 <= r131856;
double r131858 = 1.0;
double r131859 = r131858 * r131858;
double r131860 = r131855 + r131858;
double r131861 = r131860 - r131855;
double r131862 = r131859 * r131861;
double r131863 = r131860 * r131855;
double r131864 = r131862 / r131863;
double r131865 = sqrt(r131864);
double r131866 = sqrt(r131855);
double r131867 = r131858 / r131866;
double r131868 = sqrt(r131860);
double r131869 = r131858 / r131868;
double r131870 = r131867 + r131869;
double r131871 = r131865 / r131870;
double r131872 = r131865 * r131871;
double r131873 = 1.0;
double r131874 = 2.0;
double r131875 = pow(r131855, r131874);
double r131876 = r131873 / r131875;
double r131877 = 4.0;
double r131878 = pow(r131855, r131877);
double r131879 = r131873 / r131878;
double r131880 = r131876 + r131879;
double r131881 = 3.0;
double r131882 = pow(r131855, r131881);
double r131883 = r131873 / r131882;
double r131884 = r131880 - r131883;
double r131885 = r131858 * r131884;
double r131886 = r131885 / r131870;
double r131887 = r131857 ? r131872 : r131886;
return r131887;
}




Bits error versus x
Results
| Original | 20.2 |
|---|---|
| Target | 0.6 |
| Herbie | 5.5 |
if x < 138832.08552856877Initial program 0.4
rmApplied flip--0.5
rmApplied frac-times0.5
Applied frac-times0.7
Applied frac-sub0.6
Simplified0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied add-sqr-sqrt0.5
Applied times-frac0.4
Simplified0.4
if 138832.08552856877 < x Initial program 40.1
rmApplied flip--40.1
Taylor expanded around inf 10.5
Simplified10.5
Final simplification5.5
herbie shell --seed 2019308
(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)))))