1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -8.83042145045341846272546337814901562524 \cdot 10^{-5}:\\
\;\;\;\;\frac{\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{elif}\;x \le 0.002590688116001824744388803978267787897494:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \frac{{x}^{2}}{{\left(\sqrt{1}\right)}^{3}}, 0.5 - \mathsf{fma}\left(0.5, \frac{1}{\sqrt{1}}, 0.1875 \cdot \frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5}}\right)\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(e^{\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\right)}\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\end{array}double f(double x) {
double r283882 = 1.0;
double r283883 = 0.5;
double r283884 = x;
double r283885 = hypot(r283882, r283884);
double r283886 = r283882 / r283885;
double r283887 = r283882 + r283886;
double r283888 = r283883 * r283887;
double r283889 = sqrt(r283888);
double r283890 = r283882 - r283889;
return r283890;
}
double f(double x) {
double r283891 = x;
double r283892 = -8.830421450453418e-05;
bool r283893 = r283891 <= r283892;
double r283894 = 0.5;
double r283895 = -r283894;
double r283896 = 1.0;
double r283897 = hypot(r283896, r283891);
double r283898 = r283896 / r283897;
double r283899 = r283896 + r283898;
double r283900 = r283896 * r283896;
double r283901 = fma(r283895, r283899, r283900);
double r283902 = r283894 * r283899;
double r283903 = sqrt(r283902);
double r283904 = r283896 + r283903;
double r283905 = r283901 / r283904;
double r283906 = 0.0025906881160018247;
bool r283907 = r283891 <= r283906;
double r283908 = 0.25;
double r283909 = 2.0;
double r283910 = pow(r283891, r283909);
double r283911 = sqrt(r283896);
double r283912 = 3.0;
double r283913 = pow(r283911, r283912);
double r283914 = r283910 / r283913;
double r283915 = 1.0;
double r283916 = r283915 / r283911;
double r283917 = 0.1875;
double r283918 = 4.0;
double r283919 = pow(r283891, r283918);
double r283920 = 5.0;
double r283921 = pow(r283911, r283920);
double r283922 = r283919 / r283921;
double r283923 = r283917 * r283922;
double r283924 = fma(r283894, r283916, r283923);
double r283925 = r283894 - r283924;
double r283926 = fma(r283908, r283914, r283925);
double r283927 = r283926 / r283904;
double r283928 = exp(r283901);
double r283929 = log(r283928);
double r283930 = r283929 / r283904;
double r283931 = r283907 ? r283927 : r283930;
double r283932 = r283893 ? r283905 : r283931;
return r283932;
}



Bits error versus x
if x < -8.830421450453418e-05Initial program 1.1
rmApplied flip--1.1
Simplified0.2
if -8.830421450453418e-05 < x < 0.0025906881160018247Initial program 30.5
rmApplied flip--30.5
Simplified30.5
Taylor expanded around 0 30.5
Simplified0.2
if 0.0025906881160018247 < x Initial program 1.0
rmApplied flip--1.0
Simplified0.1
rmApplied add-log-exp0.1
Final simplification0.1
herbie shell --seed 2020001 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))