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.01162356852928599:\\
\;\;\;\;\frac{\frac{1}{2} - \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}{1 + \sqrt{\frac{1}{2} + \log \left(e^{\frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}\right)}}\\
\mathbf{elif}\;x \le 0.011344591265067936:\\
\;\;\;\;\mathsf{fma}\left(\frac{69}{1024}, \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right), \left(\mathsf{fma}\left(\frac{1}{8}, \left(x \cdot x\right), \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{-11}{128}\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{2} - \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}{1 + \sqrt{\frac{1}{2} + \log \left(e^{\frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}\right)}}\\
\end{array}double f(double x) {
double r3517152 = 1.0;
double r3517153 = 0.5;
double r3517154 = x;
double r3517155 = hypot(r3517152, r3517154);
double r3517156 = r3517152 / r3517155;
double r3517157 = r3517152 + r3517156;
double r3517158 = r3517153 * r3517157;
double r3517159 = sqrt(r3517158);
double r3517160 = r3517152 - r3517159;
return r3517160;
}
double f(double x) {
double r3517161 = x;
double r3517162 = -0.01162356852928599;
bool r3517163 = r3517161 <= r3517162;
double r3517164 = 0.5;
double r3517165 = 1.0;
double r3517166 = hypot(r3517165, r3517161);
double r3517167 = r3517164 / r3517166;
double r3517168 = r3517164 - r3517167;
double r3517169 = exp(r3517167);
double r3517170 = log(r3517169);
double r3517171 = r3517164 + r3517170;
double r3517172 = sqrt(r3517171);
double r3517173 = r3517165 + r3517172;
double r3517174 = r3517168 / r3517173;
double r3517175 = 0.011344591265067936;
bool r3517176 = r3517161 <= r3517175;
double r3517177 = 0.0673828125;
double r3517178 = r3517161 * r3517161;
double r3517179 = r3517178 * r3517178;
double r3517180 = r3517179 * r3517178;
double r3517181 = 0.125;
double r3517182 = -0.0859375;
double r3517183 = r3517179 * r3517182;
double r3517184 = fma(r3517181, r3517178, r3517183);
double r3517185 = fma(r3517177, r3517180, r3517184);
double r3517186 = r3517176 ? r3517185 : r3517174;
double r3517187 = r3517163 ? r3517174 : r3517186;
return r3517187;
}



Bits error versus x
if x < -0.01162356852928599 or 0.011344591265067936 < x Initial program 1.0
Simplified1.0
rmApplied flip--1.0
Simplified0.0
rmApplied add-log-exp0.1
if -0.01162356852928599 < x < 0.011344591265067936Initial program 29.8
Simplified29.8
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019133 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1 (sqrt (* 1/2 (+ 1 (/ 1 (hypot 1 x)))))))