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.000000000000252:\\
\;\;\;\;\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}, \left(\frac{1}{8} - \left(x \cdot x\right) \cdot \frac{11}{128}\right) \cdot \left(x \cdot x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{2} - \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}{1 + \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}}\\
\end{array}double f(double x) {
double r3101884 = 1.0;
double r3101885 = 0.5;
double r3101886 = x;
double r3101887 = hypot(r3101884, r3101886);
double r3101888 = r3101884 / r3101887;
double r3101889 = r3101884 + r3101888;
double r3101890 = r3101885 * r3101889;
double r3101891 = sqrt(r3101890);
double r3101892 = r3101884 - r3101891;
return r3101892;
}
double f(double x) {
double r3101893 = 1.0;
double r3101894 = x;
double r3101895 = hypot(r3101893, r3101894);
double r3101896 = 1.000000000000252;
bool r3101897 = r3101895 <= r3101896;
double r3101898 = r3101894 * r3101894;
double r3101899 = r3101898 * r3101894;
double r3101900 = r3101899 * r3101899;
double r3101901 = 0.0673828125;
double r3101902 = 0.125;
double r3101903 = 0.0859375;
double r3101904 = r3101898 * r3101903;
double r3101905 = r3101902 - r3101904;
double r3101906 = r3101905 * r3101898;
double r3101907 = fma(r3101900, r3101901, r3101906);
double r3101908 = 0.5;
double r3101909 = r3101908 / r3101895;
double r3101910 = r3101908 - r3101909;
double r3101911 = r3101908 + r3101909;
double r3101912 = sqrt(r3101911);
double r3101913 = r3101893 + r3101912;
double r3101914 = r3101910 / r3101913;
double r3101915 = r3101897 ? r3101907 : r3101914;
return r3101915;
}



Bits error versus x
if (hypot 1 x) < 1.000000000000252Initial program 30.6
Simplified30.6
Taylor expanded around 0 0.0
Simplified0.0
if 1.000000000000252 < (hypot 1 x) Initial program 1.4
Simplified1.4
rmApplied flip--1.4
Simplified0.5
Final simplification0.3
herbie shell --seed 2019143 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1 (sqrt (* 1/2 (+ 1 (/ 1 (hypot 1 x)))))))