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 r219935 = 1.0;
double r219936 = 0.5;
double r219937 = x;
double r219938 = hypot(r219935, r219937);
double r219939 = r219935 / r219938;
double r219940 = r219935 + r219939;
double r219941 = r219936 * r219940;
double r219942 = sqrt(r219941);
double r219943 = r219935 - r219942;
return r219943;
}
double f(double x) {
double r219944 = x;
double r219945 = -8.830421450453418e-05;
bool r219946 = r219944 <= r219945;
double r219947 = 0.5;
double r219948 = -r219947;
double r219949 = 1.0;
double r219950 = hypot(r219949, r219944);
double r219951 = r219949 / r219950;
double r219952 = r219949 + r219951;
double r219953 = r219949 * r219949;
double r219954 = fma(r219948, r219952, r219953);
double r219955 = r219947 * r219952;
double r219956 = sqrt(r219955);
double r219957 = r219949 + r219956;
double r219958 = r219954 / r219957;
double r219959 = 0.0025906881160018247;
bool r219960 = r219944 <= r219959;
double r219961 = 0.25;
double r219962 = 2.0;
double r219963 = pow(r219944, r219962);
double r219964 = sqrt(r219949);
double r219965 = 3.0;
double r219966 = pow(r219964, r219965);
double r219967 = r219963 / r219966;
double r219968 = 1.0;
double r219969 = r219968 / r219964;
double r219970 = 0.1875;
double r219971 = 4.0;
double r219972 = pow(r219944, r219971);
double r219973 = 5.0;
double r219974 = pow(r219964, r219973);
double r219975 = r219972 / r219974;
double r219976 = r219970 * r219975;
double r219977 = fma(r219947, r219969, r219976);
double r219978 = r219947 - r219977;
double r219979 = fma(r219961, r219967, r219978);
double r219980 = r219979 / r219957;
double r219981 = exp(r219954);
double r219982 = log(r219981);
double r219983 = r219982 / r219957;
double r219984 = r219960 ? r219980 : r219983;
double r219985 = r219946 ? r219958 : r219984;
return r219985;
}



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)))))))