1 - \sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -0.012079716481524932:\\
\;\;\;\;\frac{\frac{\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1\right) \cdot \frac{\mathsf{fma}\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)}, \mathsf{fma}\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)}, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)}, -1\right), \mathsf{fma}\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)}, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)}, -1\right)\right)}{\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} - 1} - \frac{1}{8}}{\mathsf{fma}\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \mathsf{fma}\left(\frac{1}{2}, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \frac{1}{4}\right)\right)}}{1 + \sqrt{\frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)} + \frac{1}{2}}}\\
\mathbf{elif}\;x \le 0.011674747997097862:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{4}, x \cdot x, \frac{5}{32} \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)\right) - \frac{3}{16} \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}{1 + \sqrt{\frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)} + \frac{1}{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\frac{\mathsf{fma}\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \mathsf{fma}\left(\frac{1}{2}, \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \frac{1}{4}\right)\right)}{\mathsf{fma}\left(\left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1\right) \cdot \left(\frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1\right), \frac{\frac{-1}{2}}{\mathsf{hypot}\left(1, x\right)} + 1, \frac{-1}{8}\right)}}}{1 + \sqrt{\frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)} + \frac{1}{2}}}\\
\end{array}double f(double x) {
double r2561049 = 1.0;
double r2561050 = 0.5;
double r2561051 = x;
double r2561052 = hypot(r2561049, r2561051);
double r2561053 = r2561049 / r2561052;
double r2561054 = r2561049 + r2561053;
double r2561055 = r2561050 * r2561054;
double r2561056 = sqrt(r2561055);
double r2561057 = r2561049 - r2561056;
return r2561057;
}
double f(double x) {
double r2561058 = x;
double r2561059 = -0.012079716481524932;
bool r2561060 = r2561058 <= r2561059;
double r2561061 = -0.5;
double r2561062 = 1.0;
double r2561063 = hypot(r2561062, r2561058);
double r2561064 = r2561061 / r2561063;
double r2561065 = r2561064 + r2561062;
double r2561066 = -1.0;
double r2561067 = fma(r2561064, r2561064, r2561066);
double r2561068 = fma(r2561064, r2561067, r2561067);
double r2561069 = r2561064 - r2561062;
double r2561070 = r2561068 / r2561069;
double r2561071 = r2561065 * r2561070;
double r2561072 = 0.125;
double r2561073 = r2561071 - r2561072;
double r2561074 = 0.5;
double r2561075 = 0.25;
double r2561076 = fma(r2561074, r2561065, r2561075);
double r2561077 = fma(r2561065, r2561065, r2561076);
double r2561078 = r2561073 / r2561077;
double r2561079 = r2561074 / r2561063;
double r2561080 = r2561079 + r2561074;
double r2561081 = sqrt(r2561080);
double r2561082 = r2561062 + r2561081;
double r2561083 = r2561078 / r2561082;
double r2561084 = 0.011674747997097862;
bool r2561085 = r2561058 <= r2561084;
double r2561086 = r2561058 * r2561058;
double r2561087 = 0.15625;
double r2561088 = r2561086 * r2561086;
double r2561089 = r2561086 * r2561088;
double r2561090 = r2561087 * r2561089;
double r2561091 = fma(r2561075, r2561086, r2561090);
double r2561092 = 0.1875;
double r2561093 = r2561092 * r2561088;
double r2561094 = r2561091 - r2561093;
double r2561095 = r2561094 / r2561082;
double r2561096 = r2561065 * r2561065;
double r2561097 = -0.125;
double r2561098 = fma(r2561096, r2561065, r2561097);
double r2561099 = r2561077 / r2561098;
double r2561100 = r2561062 / r2561099;
double r2561101 = r2561100 / r2561082;
double r2561102 = r2561085 ? r2561095 : r2561101;
double r2561103 = r2561060 ? r2561083 : r2561102;
return r2561103;
}



Bits error versus x
if x < -0.012079716481524932Initial program 1.0
Simplified1.0
rmApplied flip--1.0
Simplified0.1
rmApplied flip3--0.1
Simplified0.1
Simplified0.1
rmApplied flip-+0.1
Applied associate-*r/0.1
Simplified0.1
if -0.012079716481524932 < x < 0.011674747997097862Initial program 29.1
Simplified29.1
rmApplied flip--29.1
Simplified29.1
Taylor expanded around 0 0.0
Simplified0.0
if 0.011674747997097862 < x Initial program 1.0
Simplified1.0
rmApplied flip--1.0
Simplified0.1
rmApplied flip3--0.1
Simplified0.1
Simplified0.1
rmApplied clear-num0.1
Simplified0.1
Final simplification0.0
herbie shell --seed 2019153 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1 (sqrt (* 1/2 (+ 1 (/ 1 (hypot 1 x)))))))