\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\begin{array}{l}
\mathbf{if}\;x \le 5.2088959942045496 \cdot 10^{+107}:\\
\;\;\;\;{x}^{\frac{-1}{2}} - \frac{1}{\sqrt{\sqrt[3]{1 + x}} \cdot \left|\sqrt[3]{1 + x}\right|}\\
\mathbf{else}:\\
\;\;\;\;{\left(e^{\sqrt[3]{\log \left(\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{1 + x}}\right)} \cdot \sqrt[3]{\log \left(\frac{\frac{1}{\sqrt{x} \cdot x} - \frac{1}{\sqrt{1 + x} \cdot \left(1 + x\right)}}{\frac{1}{\sqrt{x}} \cdot \frac{1}{\sqrt{x}} + \left(\frac{1}{\sqrt{1 + x}} + \frac{1}{\sqrt{x}}\right) \cdot \frac{1}{\sqrt{1 + x}}}\right)}}\right)}^{\left(\sqrt[3]{\log \left(\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{1 + x}}\right)}\right)}\\
\end{array}double f(double x) {
double r6178367 = 1.0;
double r6178368 = x;
double r6178369 = sqrt(r6178368);
double r6178370 = r6178367 / r6178369;
double r6178371 = r6178368 + r6178367;
double r6178372 = sqrt(r6178371);
double r6178373 = r6178367 / r6178372;
double r6178374 = r6178370 - r6178373;
return r6178374;
}
double f(double x) {
double r6178375 = x;
double r6178376 = 5.2088959942045496e+107;
bool r6178377 = r6178375 <= r6178376;
double r6178378 = -0.5;
double r6178379 = pow(r6178375, r6178378);
double r6178380 = 1.0;
double r6178381 = r6178380 + r6178375;
double r6178382 = cbrt(r6178381);
double r6178383 = sqrt(r6178382);
double r6178384 = fabs(r6178382);
double r6178385 = r6178383 * r6178384;
double r6178386 = r6178380 / r6178385;
double r6178387 = r6178379 - r6178386;
double r6178388 = sqrt(r6178375);
double r6178389 = r6178380 / r6178388;
double r6178390 = sqrt(r6178381);
double r6178391 = r6178380 / r6178390;
double r6178392 = r6178389 - r6178391;
double r6178393 = log(r6178392);
double r6178394 = cbrt(r6178393);
double r6178395 = r6178388 * r6178375;
double r6178396 = r6178380 / r6178395;
double r6178397 = r6178390 * r6178381;
double r6178398 = r6178380 / r6178397;
double r6178399 = r6178396 - r6178398;
double r6178400 = r6178389 * r6178389;
double r6178401 = r6178391 + r6178389;
double r6178402 = r6178401 * r6178391;
double r6178403 = r6178400 + r6178402;
double r6178404 = r6178399 / r6178403;
double r6178405 = log(r6178404);
double r6178406 = cbrt(r6178405);
double r6178407 = r6178394 * r6178406;
double r6178408 = exp(r6178407);
double r6178409 = pow(r6178408, r6178394);
double r6178410 = r6178377 ? r6178387 : r6178409;
return r6178410;
}




Bits error versus x
Results
| Original | 19.9 |
|---|---|
| Target | 0.6 |
| Herbie | 19.7 |
if x < 5.2088959942045496e+107Initial program 15.1
rmApplied pow1/215.1
Applied pow-flip14.9
Simplified14.9
rmApplied add-cube-cbrt14.8
Applied sqrt-prod14.8
Simplified14.8
if 5.2088959942045496e+107 < x Initial program 29.9
rmApplied add-exp-log29.9
rmApplied add-cube-cbrt29.9
Applied exp-prod29.9
rmApplied flip3--29.9
Simplified29.9
Simplified29.9
Final simplification19.7
herbie shell --seed 2019168
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))