\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\begin{array}{l}
\mathbf{if}\;x \le 4508.697553152039:\\
\;\;\;\;{x}^{\frac{-1}{2}} - \frac{\sqrt{\frac{1}{\sqrt{\sqrt{1 + x}}}}}{\sqrt[3]{\sqrt{\sqrt{1 + x}}}} \cdot \frac{\sqrt{\frac{1}{\sqrt{\sqrt{1 + x}}}}}{\sqrt[3]{\sqrt{\sqrt{1 + x}}} \cdot \sqrt[3]{\sqrt{\sqrt{1 + x}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-3}{8} \cdot \sqrt{\frac{1}{{x}^{5}}} + \left(\frac{5}{16} \cdot \sqrt{\frac{1}{{x}^{7}}} + \sqrt{\frac{\frac{1}{x}}{x \cdot x}} \cdot \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r3975457 = 1.0;
double r3975458 = x;
double r3975459 = sqrt(r3975458);
double r3975460 = r3975457 / r3975459;
double r3975461 = r3975458 + r3975457;
double r3975462 = sqrt(r3975461);
double r3975463 = r3975457 / r3975462;
double r3975464 = r3975460 - r3975463;
return r3975464;
}
double f(double x) {
double r3975465 = x;
double r3975466 = 4508.697553152039;
bool r3975467 = r3975465 <= r3975466;
double r3975468 = -0.5;
double r3975469 = pow(r3975465, r3975468);
double r3975470 = 1.0;
double r3975471 = r3975470 + r3975465;
double r3975472 = sqrt(r3975471);
double r3975473 = sqrt(r3975472);
double r3975474 = r3975470 / r3975473;
double r3975475 = sqrt(r3975474);
double r3975476 = cbrt(r3975473);
double r3975477 = r3975475 / r3975476;
double r3975478 = r3975476 * r3975476;
double r3975479 = r3975475 / r3975478;
double r3975480 = r3975477 * r3975479;
double r3975481 = r3975469 - r3975480;
double r3975482 = -0.375;
double r3975483 = 5.0;
double r3975484 = pow(r3975465, r3975483);
double r3975485 = r3975470 / r3975484;
double r3975486 = sqrt(r3975485);
double r3975487 = r3975482 * r3975486;
double r3975488 = 0.3125;
double r3975489 = 7.0;
double r3975490 = pow(r3975465, r3975489);
double r3975491 = r3975470 / r3975490;
double r3975492 = sqrt(r3975491);
double r3975493 = r3975488 * r3975492;
double r3975494 = r3975470 / r3975465;
double r3975495 = r3975465 * r3975465;
double r3975496 = r3975494 / r3975495;
double r3975497 = sqrt(r3975496);
double r3975498 = 0.5;
double r3975499 = r3975497 * r3975498;
double r3975500 = r3975493 + r3975499;
double r3975501 = r3975487 + r3975500;
double r3975502 = r3975467 ? r3975481 : r3975501;
return r3975502;
}




Bits error versus x
Results
| Original | 19.9 |
|---|---|
| Target | 0.7 |
| Herbie | 9.9 |
if x < 4508.697553152039Initial program 0.3
rmApplied pow1/20.3
Applied pow-flip0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied sqrt-prod0.1
Applied associate-/r*0.1
rmApplied add-cube-cbrt0.1
Applied add-sqr-sqrt0.1
Applied times-frac0.1
if 4508.697553152039 < x Initial program 39.6
rmApplied pow1/239.6
Applied pow-flip44.6
Simplified44.6
rmApplied add-sqr-sqrt50.5
Applied add-sqr-sqrt42.0
Applied difference-of-squares42.0
Taylor expanded around inf 20.6
Simplified19.9
Final simplification9.9
herbie shell --seed 2019152
(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)))))