1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;\mathsf{hypot}\left(1, x\right) \le 1.0000000000000075:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \frac{{x}^{2}}{{\left(\sqrt{1}\right)}^{3}}, 0.5 - \mathsf{fma}\left(0.5, \frac{1}{\sqrt{1}}, 0.1875 \cdot \frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5}}\right)\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{\sqrt[3]{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}} \cdot \sqrt[3]{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}} \cdot \left(\frac{\sqrt[3]{1}}{\sqrt{\sqrt[3]{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}} \cdot \frac{\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\right)}{\sqrt{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}\right)\\
\end{array}double f(double x) {
double r405490 = 1.0;
double r405491 = 0.5;
double r405492 = x;
double r405493 = hypot(r405490, r405492);
double r405494 = r405490 / r405493;
double r405495 = r405490 + r405494;
double r405496 = r405491 * r405495;
double r405497 = sqrt(r405496);
double r405498 = r405490 - r405497;
return r405498;
}
double f(double x) {
double r405499 = 1.0;
double r405500 = x;
double r405501 = hypot(r405499, r405500);
double r405502 = 1.0000000000000075;
bool r405503 = r405501 <= r405502;
double r405504 = 0.25;
double r405505 = 2.0;
double r405506 = pow(r405500, r405505);
double r405507 = sqrt(r405499);
double r405508 = 3.0;
double r405509 = pow(r405507, r405508);
double r405510 = r405506 / r405509;
double r405511 = 0.5;
double r405512 = 1.0;
double r405513 = r405512 / r405507;
double r405514 = 0.1875;
double r405515 = 4.0;
double r405516 = pow(r405500, r405515);
double r405517 = 5.0;
double r405518 = pow(r405507, r405517);
double r405519 = r405516 / r405518;
double r405520 = r405514 * r405519;
double r405521 = fma(r405511, r405513, r405520);
double r405522 = r405511 - r405521;
double r405523 = fma(r405504, r405510, r405522);
double r405524 = r405499 / r405501;
double r405525 = r405499 + r405524;
double r405526 = r405511 * r405525;
double r405527 = sqrt(r405526);
double r405528 = r405499 + r405527;
double r405529 = r405523 / r405528;
double r405530 = cbrt(r405512);
double r405531 = r405530 * r405530;
double r405532 = cbrt(r405528);
double r405533 = r405532 * r405532;
double r405534 = sqrt(r405533);
double r405535 = r405531 / r405534;
double r405536 = sqrt(r405532);
double r405537 = r405530 / r405536;
double r405538 = -r405511;
double r405539 = r405499 * r405499;
double r405540 = fma(r405538, r405525, r405539);
double r405541 = sqrt(r405528);
double r405542 = r405540 / r405541;
double r405543 = r405537 * r405542;
double r405544 = r405535 * r405543;
double r405545 = r405503 ? r405529 : r405544;
return r405545;
}



Bits error versus x
if (hypot 1.0 x) < 1.0000000000000075Initial program 29.5
rmApplied flip--29.5
Simplified29.5
Taylor expanded around 0 29.4
Simplified0.0
if 1.0000000000000075 < (hypot 1.0 x) Initial program 1.4
rmApplied flip--1.4
Simplified0.5
rmApplied add-sqr-sqrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.5
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Applied associate-*l*0.5
Final simplification0.2
herbie shell --seed 2020059 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))