\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\begin{array}{l}
\mathbf{if}\;\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}} \le 1.2087681343018217:\\
\;\;\;\;\frac{{e}^{\left(\log \left(\frac{{1}^{2} \cdot \left(x + 1\right) + \left(-x \cdot {1}^{2}\right)}{1 \cdot \left(\sqrt{x} + \sqrt{x + 1}\right)}\right)\right)}}{{e}^{\left(\log \left(\sqrt{x} \cdot \sqrt{x + 1}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{x}} - \frac{\frac{1}{\left|\sqrt[3]{x + 1}\right|}}{\sqrt{\sqrt[3]{x + 1}}}\\
\end{array}double f(double x) {
double r134108 = 1.0;
double r134109 = x;
double r134110 = sqrt(r134109);
double r134111 = r134108 / r134110;
double r134112 = r134109 + r134108;
double r134113 = sqrt(r134112);
double r134114 = r134108 / r134113;
double r134115 = r134111 - r134114;
return r134115;
}
double f(double x) {
double r134116 = 1.0;
double r134117 = x;
double r134118 = sqrt(r134117);
double r134119 = r134116 / r134118;
double r134120 = r134117 + r134116;
double r134121 = sqrt(r134120);
double r134122 = r134116 / r134121;
double r134123 = r134119 - r134122;
double r134124 = 1.2087681343018217;
bool r134125 = r134123 <= r134124;
double r134126 = exp(1.0);
double r134127 = 2.0;
double r134128 = pow(r134116, r134127);
double r134129 = r134128 * r134120;
double r134130 = r134117 * r134128;
double r134131 = -r134130;
double r134132 = r134129 + r134131;
double r134133 = r134118 + r134121;
double r134134 = r134116 * r134133;
double r134135 = r134132 / r134134;
double r134136 = log(r134135);
double r134137 = pow(r134126, r134136);
double r134138 = r134118 * r134121;
double r134139 = log(r134138);
double r134140 = pow(r134126, r134139);
double r134141 = r134137 / r134140;
double r134142 = cbrt(r134120);
double r134143 = fabs(r134142);
double r134144 = r134116 / r134143;
double r134145 = sqrt(r134142);
double r134146 = r134144 / r134145;
double r134147 = r134119 - r134146;
double r134148 = r134125 ? r134141 : r134147;
return r134148;
}




Bits error versus x
Results
| Original | 19.3 |
|---|---|
| Target | 0.7 |
| Herbie | 18.7 |
if (- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))) < 1.2087681343018217Initial program 38.6
rmApplied add-exp-log38.6
rmApplied pow138.6
Applied log-pow38.6
Applied exp-prod38.6
Simplified38.6
rmApplied frac-sub38.6
Applied log-div38.6
Applied pow-sub38.6
rmApplied flip--38.2
Simplified37.3
Simplified37.3
if 1.2087681343018217 < (- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))) Initial program 0.3
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied associate-/r*0.3
Simplified0.3
Final simplification18.7
herbie shell --seed 2020059
(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)))))