1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -0.00180314527098315142:\\
\;\;\;\;\frac{\log \left(e^{\mathsf{fma}\left(1, 1, \left(-0.5\right) \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)\right)}\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{elif}\;x \le 0.0026989909516307821:\\
\;\;\;\;\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{\frac{\mathsf{fma}\left(1, 1, \left(-0.5\right) \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)\right)}{\sqrt{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}}{\sqrt{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}\\
\end{array}double f(double x) {
double r366178 = 1.0;
double r366179 = 0.5;
double r366180 = x;
double r366181 = hypot(r366178, r366180);
double r366182 = r366178 / r366181;
double r366183 = r366178 + r366182;
double r366184 = r366179 * r366183;
double r366185 = sqrt(r366184);
double r366186 = r366178 - r366185;
return r366186;
}
double f(double x) {
double r366187 = x;
double r366188 = -0.0018031452709831514;
bool r366189 = r366187 <= r366188;
double r366190 = 1.0;
double r366191 = 0.5;
double r366192 = -r366191;
double r366193 = hypot(r366190, r366187);
double r366194 = r366190 / r366193;
double r366195 = r366190 + r366194;
double r366196 = r366192 * r366195;
double r366197 = fma(r366190, r366190, r366196);
double r366198 = exp(r366197);
double r366199 = log(r366198);
double r366200 = r366191 * r366195;
double r366201 = sqrt(r366200);
double r366202 = r366190 + r366201;
double r366203 = r366199 / r366202;
double r366204 = 0.002698990951630782;
bool r366205 = r366187 <= r366204;
double r366206 = 0.25;
double r366207 = 2.0;
double r366208 = pow(r366187, r366207);
double r366209 = sqrt(r366190);
double r366210 = 3.0;
double r366211 = pow(r366209, r366210);
double r366212 = r366208 / r366211;
double r366213 = 1.0;
double r366214 = r366213 / r366209;
double r366215 = 0.1875;
double r366216 = 4.0;
double r366217 = pow(r366187, r366216);
double r366218 = 5.0;
double r366219 = pow(r366209, r366218);
double r366220 = r366217 / r366219;
double r366221 = r366215 * r366220;
double r366222 = fma(r366191, r366214, r366221);
double r366223 = r366191 - r366222;
double r366224 = fma(r366206, r366212, r366223);
double r366225 = r366224 / r366202;
double r366226 = sqrt(r366202);
double r366227 = r366197 / r366226;
double r366228 = r366227 / r366226;
double r366229 = r366205 ? r366225 : r366228;
double r366230 = r366189 ? r366203 : r366229;
return r366230;
}



Bits error versus x
if x < -0.0018031452709831514Initial program 1.1
rmApplied flip--1.1
Simplified0.1
rmApplied add-log-exp0.1
if -0.0018031452709831514 < x < 0.002698990951630782Initial program 29.8
rmApplied flip--29.8
Simplified29.8
Taylor expanded around 0 29.8
Simplified0.3
if 0.002698990951630782 < x Initial program 1.1
rmApplied flip--1.1
Simplified0.1
rmApplied add-log-exp0.1
rmApplied add-sqr-sqrt1.1
Applied associate-/r*0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))