1 - \sqrt{\frac{1}{2} \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.0000170445415169:\\
\;\;\;\;\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right), \frac{69}{1024}, \mathsf{fma}\left(x \cdot x, \frac{1}{8}, \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{-11}{128}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \left(\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}\right)}{1 + \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}}\\
\end{array}double f(double x) {
double r2061618 = 1.0;
double r2061619 = 0.5;
double r2061620 = x;
double r2061621 = hypot(r2061618, r2061620);
double r2061622 = r2061618 / r2061621;
double r2061623 = r2061618 + r2061622;
double r2061624 = r2061619 * r2061623;
double r2061625 = sqrt(r2061624);
double r2061626 = r2061618 - r2061625;
return r2061626;
}
double f(double x) {
double r2061627 = 1.0;
double r2061628 = x;
double r2061629 = hypot(r2061627, r2061628);
double r2061630 = 1.0000170445415169;
bool r2061631 = r2061629 <= r2061630;
double r2061632 = r2061628 * r2061628;
double r2061633 = r2061632 * r2061628;
double r2061634 = r2061633 * r2061633;
double r2061635 = 0.0673828125;
double r2061636 = 0.125;
double r2061637 = r2061632 * r2061632;
double r2061638 = -0.0859375;
double r2061639 = r2061637 * r2061638;
double r2061640 = fma(r2061632, r2061636, r2061639);
double r2061641 = fma(r2061634, r2061635, r2061640);
double r2061642 = 0.5;
double r2061643 = r2061642 / r2061629;
double r2061644 = r2061642 + r2061643;
double r2061645 = r2061627 - r2061644;
double r2061646 = sqrt(r2061644);
double r2061647 = r2061627 + r2061646;
double r2061648 = r2061645 / r2061647;
double r2061649 = r2061631 ? r2061641 : r2061648;
return r2061649;
}



Bits error versus x
if (hypot 1 x) < 1.0000170445415169Initial program 29.7
Simplified29.7
Taylor expanded around 0 0.0
Simplified0.0
if 1.0000170445415169 < (hypot 1 x) Initial program 1.0
Simplified1.0
rmApplied flip--1.0
Simplified0.1
Simplified0.1
Final simplification0.0
herbie shell --seed 2019154 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1 (sqrt (* 1/2 (+ 1 (/ 1 (hypot 1 x)))))))