1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -8.6313832157436626 \cdot 10^{-5}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\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)}}}\\
\mathbf{elif}\;x \le 0.00276280764897135359:\\
\;\;\;\;\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{\log \left(e^{\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\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 r473 = 1.0;
double r474 = 0.5;
double r475 = x;
double r476 = hypot(r473, r475);
double r477 = r473 / r476;
double r478 = r473 + r477;
double r479 = r474 * r478;
double r480 = sqrt(r479);
double r481 = r473 - r480;
return r481;
}
double f(double x) {
double r482 = x;
double r483 = -8.631383215743663e-05;
bool r484 = r482 <= r483;
double r485 = 0.5;
double r486 = -r485;
double r487 = 1.0;
double r488 = hypot(r487, r482);
double r489 = r487 / r488;
double r490 = r487 + r489;
double r491 = r487 * r487;
double r492 = fma(r486, r490, r491);
double r493 = r485 * r490;
double r494 = sqrt(r493);
double r495 = r487 + r494;
double r496 = sqrt(r495);
double r497 = r492 / r496;
double r498 = r497 / r496;
double r499 = 0.0027628076489713536;
bool r500 = r482 <= r499;
double r501 = 0.25;
double r502 = 2.0;
double r503 = pow(r482, r502);
double r504 = sqrt(r487);
double r505 = 3.0;
double r506 = pow(r504, r505);
double r507 = r503 / r506;
double r508 = 1.0;
double r509 = r508 / r504;
double r510 = 0.1875;
double r511 = 4.0;
double r512 = pow(r482, r511);
double r513 = 5.0;
double r514 = pow(r504, r513);
double r515 = r512 / r514;
double r516 = r510 * r515;
double r517 = fma(r485, r509, r516);
double r518 = r485 - r517;
double r519 = fma(r501, r507, r518);
double r520 = r519 / r495;
double r521 = exp(r492);
double r522 = log(r521);
double r523 = r522 / r496;
double r524 = r523 / r496;
double r525 = r500 ? r520 : r524;
double r526 = r484 ? r498 : r525;
return r526;
}



Bits error versus x
if x < -8.631383215743663e-05Initial program 1.2
rmApplied flip--1.2
Simplified0.2
rmApplied add-sqr-sqrt1.2
Applied associate-/r*0.2
if -8.631383215743663e-05 < x < 0.0027628076489713536Initial program 30.0
rmApplied flip--30.0
Simplified29.9
Taylor expanded around 0 29.9
Simplified0.2
if 0.0027628076489713536 < x Initial program 1.0
rmApplied flip--1.0
Simplified0.1
rmApplied add-sqr-sqrt1.0
Applied associate-/r*0.1
rmApplied add-log-exp0.1
Final simplification0.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))