\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\begin{array}{l}
\mathbf{if}\;x \le 7248.001864012983787688426673412322998047:\\
\;\;\;\;\frac{\frac{1}{\sqrt{x}} \cdot \frac{1}{\sqrt{x}} - \frac{1 \cdot 1}{x + 1}}{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}\\
\mathbf{else}:\\
\;\;\;\;\left(0.3125 \cdot \left(\sqrt{\frac{1}{{x}^{7}}} \cdot {\left(\sqrt{1}\right)}^{2}\right) + 0.5 \cdot \left(\sqrt{\frac{1}{{x}^{3}}} \cdot {\left(\sqrt{1}\right)}^{2}\right)\right) - 0.375 \cdot \left(\sqrt{\frac{1}{{x}^{5}}} \cdot {\left(\sqrt{1}\right)}^{2}\right)\\
\end{array}double f(double x) {
double r504782 = 1.0;
double r504783 = x;
double r504784 = sqrt(r504783);
double r504785 = r504782 / r504784;
double r504786 = r504783 + r504782;
double r504787 = sqrt(r504786);
double r504788 = r504782 / r504787;
double r504789 = r504785 - r504788;
return r504789;
}
double f(double x) {
double r504790 = x;
double r504791 = 7248.001864012984;
bool r504792 = r504790 <= r504791;
double r504793 = 1.0;
double r504794 = sqrt(r504790);
double r504795 = r504793 / r504794;
double r504796 = r504795 * r504795;
double r504797 = r504793 * r504793;
double r504798 = r504790 + r504793;
double r504799 = r504797 / r504798;
double r504800 = r504796 - r504799;
double r504801 = sqrt(r504798);
double r504802 = r504793 / r504801;
double r504803 = r504795 + r504802;
double r504804 = r504800 / r504803;
double r504805 = 0.3125;
double r504806 = 1.0;
double r504807 = 7.0;
double r504808 = pow(r504790, r504807);
double r504809 = r504806 / r504808;
double r504810 = sqrt(r504809);
double r504811 = sqrt(r504793);
double r504812 = 2.0;
double r504813 = pow(r504811, r504812);
double r504814 = r504810 * r504813;
double r504815 = r504805 * r504814;
double r504816 = 0.5;
double r504817 = 3.0;
double r504818 = pow(r504790, r504817);
double r504819 = r504806 / r504818;
double r504820 = sqrt(r504819);
double r504821 = r504820 * r504813;
double r504822 = r504816 * r504821;
double r504823 = r504815 + r504822;
double r504824 = 0.375;
double r504825 = 5.0;
double r504826 = pow(r504790, r504825);
double r504827 = r504806 / r504826;
double r504828 = sqrt(r504827);
double r504829 = r504828 * r504813;
double r504830 = r504824 * r504829;
double r504831 = r504823 - r504830;
double r504832 = r504792 ? r504804 : r504831;
return r504832;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.7 |
| Herbie | 10.1 |
if x < 7248.001864012984Initial program 0.3
rmApplied flip--0.4
Simplified0.4
if 7248.001864012984 < x Initial program 39.5
rmApplied add-sqr-sqrt39.5
Applied sqrt-prod47.6
Applied add-sqr-sqrt47.6
Applied times-frac51.1
Applied add-sqr-sqrt51.1
Applied sqrt-prod50.0
Applied add-sqr-sqrt50.0
Applied times-frac39.6
Applied difference-of-squares39.6
Taylor expanded around inf 20.5
Final simplification10.1
herbie shell --seed 2019350 +o rules:numerics
(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)))))