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 r2186617 = 1.0;
double r2186618 = 0.5;
double r2186619 = x;
double r2186620 = hypot(r2186617, r2186619);
double r2186621 = r2186617 / r2186620;
double r2186622 = r2186617 + r2186621;
double r2186623 = r2186618 * r2186622;
double r2186624 = sqrt(r2186623);
double r2186625 = r2186617 - r2186624;
return r2186625;
}
double f(double x) {
double r2186626 = x;
double r2186627 = -0.012079716481524932;
bool r2186628 = r2186626 <= r2186627;
double r2186629 = -0.5;
double r2186630 = 1.0;
double r2186631 = hypot(r2186630, r2186626);
double r2186632 = r2186629 / r2186631;
double r2186633 = r2186632 + r2186630;
double r2186634 = -1.0;
double r2186635 = fma(r2186632, r2186632, r2186634);
double r2186636 = fma(r2186632, r2186635, r2186635);
double r2186637 = r2186632 - r2186630;
double r2186638 = r2186636 / r2186637;
double r2186639 = r2186633 * r2186638;
double r2186640 = 0.125;
double r2186641 = r2186639 - r2186640;
double r2186642 = 0.5;
double r2186643 = 0.25;
double r2186644 = fma(r2186642, r2186633, r2186643);
double r2186645 = fma(r2186633, r2186633, r2186644);
double r2186646 = r2186641 / r2186645;
double r2186647 = r2186642 / r2186631;
double r2186648 = r2186647 + r2186642;
double r2186649 = sqrt(r2186648);
double r2186650 = r2186630 + r2186649;
double r2186651 = r2186646 / r2186650;
double r2186652 = 0.011674747997097862;
bool r2186653 = r2186626 <= r2186652;
double r2186654 = r2186626 * r2186626;
double r2186655 = 0.15625;
double r2186656 = r2186654 * r2186654;
double r2186657 = r2186654 * r2186656;
double r2186658 = r2186655 * r2186657;
double r2186659 = fma(r2186643, r2186654, r2186658);
double r2186660 = 0.1875;
double r2186661 = r2186660 * r2186656;
double r2186662 = r2186659 - r2186661;
double r2186663 = r2186662 / r2186650;
double r2186664 = r2186633 * r2186633;
double r2186665 = -0.125;
double r2186666 = fma(r2186664, r2186633, r2186665);
double r2186667 = r2186645 / r2186666;
double r2186668 = r2186630 / r2186667;
double r2186669 = r2186668 / r2186650;
double r2186670 = r2186653 ? r2186663 : r2186669;
double r2186671 = r2186628 ? r2186651 : r2186670;
return r2186671;
}



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 *-un-lft-identity0.1
Applied associate-/l*0.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)))))))