1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -2.803231780383790086224129762398904475162 \cdot 10^{-8}:\\
\;\;\;\;\left(\left(\sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5} \cdot \sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5} + \left(\sqrt{1} \cdot \sqrt{1} - \sqrt{1} \cdot \sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5}\right)\right) \cdot \left(\frac{1}{\mathsf{fma}\left(\sqrt{1}, 1, {\left(\sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5}\right)}^{3}\right)} - \frac{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5}{\mathsf{fma}\left(\sqrt{1}, 1, {\left(\sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5}\right)}^{3}\right)}\right)\right) \cdot \frac{1}{\sqrt{1}}\\
\mathbf{elif}\;x \le 8.055965450229694943973940413073364652519 \cdot 10^{-5}:\\
\;\;\;\;\left(\mathsf{fma}\left(\frac{\frac{x}{1} \cdot \frac{x}{\sqrt{1}}}{\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)}, 0.25, \mathsf{fma}\left(0.00390625, \frac{\sqrt{\frac{1}{{\left(\frac{0.5}{\sqrt{1}} + 0.5\right)}^{3}}} \cdot {x}^{4}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2} \cdot {\left(\sqrt{1}\right)}^{5}}, \mathsf{fma}\left(\frac{\frac{{x}^{4}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{3}}}{\left(\frac{0.5}{\sqrt{1}} + 0.5\right) \cdot \left(1 \cdot 1\right)}, 0.0078125, \frac{0.5}{\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)}\right)\right)\right) - \mathsf{fma}\left(\frac{\sqrt{\frac{1}{\frac{0.5}{\sqrt{1}} + 0.5}}}{{\left(\sqrt{1}\right)}^{3}} \cdot \frac{x \cdot x}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2}}, 0.0625, \mathsf{fma}\left(0.0078125, \frac{\frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5} \cdot \left(\frac{0.5}{\sqrt{1}} + 0.5\right)}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{3}}, \mathsf{fma}\left(0.046875, \frac{{x}^{4}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2}} \cdot \frac{\sqrt{\frac{1}{\frac{0.5}{\sqrt{1}} + 0.5}}}{1 \cdot 1}, \mathsf{fma}\left(0.1875, \frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5} \cdot \mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)}, \mathsf{fma}\left(\frac{\frac{{x}^{4}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2}} \cdot 0.00390625}{{\left(\sqrt{1}\right)}^{6}}, \sqrt{\frac{1}{{\left(\frac{0.5}{\sqrt{1}} + 0.5\right)}^{3}}}, \frac{\frac{0.5}{\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)}}{\sqrt{1}}\right)\right)\right)\right)\right)\right) + \left(\frac{\frac{x \cdot x}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2}}}{1} \cdot 0.0625 + 0.078125 \cdot \frac{\frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5}}}{{\left(\mathsf{fma}\left(\sqrt{1}, \sqrt{\frac{0.5}{\sqrt{1}} + 0.5}, 1\right)\right)}^{2}}\right) \cdot \sqrt{\frac{1}{\frac{0.5}{\sqrt{1}} + 0.5}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{1}} \cdot \left(\frac{1}{\sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5} + \sqrt{1}} - \frac{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{\frac{0.5}{\mathsf{hypot}\left(1, x\right)} + 0.5} + \sqrt{1}\right)\right)}\right)\\
\end{array}double f(double x) {
double r223606 = 1.0;
double r223607 = 0.5;
double r223608 = x;
double r223609 = hypot(r223606, r223608);
double r223610 = r223606 / r223609;
double r223611 = r223606 + r223610;
double r223612 = r223607 * r223611;
double r223613 = sqrt(r223612);
double r223614 = r223606 - r223613;
return r223614;
}
double f(double x) {
double r223615 = x;
double r223616 = -2.80323178038379e-08;
bool r223617 = r223615 <= r223616;
double r223618 = 0.5;
double r223619 = 1.0;
double r223620 = hypot(r223619, r223615);
double r223621 = r223618 / r223620;
double r223622 = r223621 + r223618;
double r223623 = sqrt(r223622);
double r223624 = r223623 * r223623;
double r223625 = sqrt(r223619);
double r223626 = r223625 * r223625;
double r223627 = r223625 * r223623;
double r223628 = r223626 - r223627;
double r223629 = r223624 + r223628;
double r223630 = 3.0;
double r223631 = pow(r223623, r223630);
double r223632 = fma(r223625, r223619, r223631);
double r223633 = r223619 / r223632;
double r223634 = r223622 / r223632;
double r223635 = r223633 - r223634;
double r223636 = r223629 * r223635;
double r223637 = r223619 / r223625;
double r223638 = r223636 * r223637;
double r223639 = 8.055965450229695e-05;
bool r223640 = r223615 <= r223639;
double r223641 = r223615 / r223619;
double r223642 = r223615 / r223625;
double r223643 = r223641 * r223642;
double r223644 = r223618 / r223625;
double r223645 = r223644 + r223618;
double r223646 = sqrt(r223645);
double r223647 = fma(r223625, r223646, r223619);
double r223648 = r223643 / r223647;
double r223649 = 0.25;
double r223650 = 0.00390625;
double r223651 = 1.0;
double r223652 = pow(r223645, r223630);
double r223653 = r223651 / r223652;
double r223654 = sqrt(r223653);
double r223655 = 4.0;
double r223656 = pow(r223615, r223655);
double r223657 = r223654 * r223656;
double r223658 = 2.0;
double r223659 = pow(r223647, r223658);
double r223660 = 5.0;
double r223661 = pow(r223625, r223660);
double r223662 = r223659 * r223661;
double r223663 = r223657 / r223662;
double r223664 = pow(r223647, r223630);
double r223665 = r223656 / r223664;
double r223666 = r223619 * r223619;
double r223667 = r223645 * r223666;
double r223668 = r223665 / r223667;
double r223669 = 0.0078125;
double r223670 = r223618 / r223647;
double r223671 = fma(r223668, r223669, r223670);
double r223672 = fma(r223650, r223663, r223671);
double r223673 = fma(r223648, r223649, r223672);
double r223674 = r223651 / r223645;
double r223675 = sqrt(r223674);
double r223676 = pow(r223625, r223630);
double r223677 = r223675 / r223676;
double r223678 = r223615 * r223615;
double r223679 = r223678 / r223659;
double r223680 = r223677 * r223679;
double r223681 = 0.0625;
double r223682 = r223661 * r223645;
double r223683 = r223656 / r223682;
double r223684 = r223683 / r223664;
double r223685 = 0.046875;
double r223686 = r223656 / r223659;
double r223687 = r223675 / r223666;
double r223688 = r223686 * r223687;
double r223689 = 0.1875;
double r223690 = r223661 * r223647;
double r223691 = r223656 / r223690;
double r223692 = r223686 * r223650;
double r223693 = 6.0;
double r223694 = pow(r223625, r223693);
double r223695 = r223692 / r223694;
double r223696 = r223670 / r223625;
double r223697 = fma(r223695, r223654, r223696);
double r223698 = fma(r223689, r223691, r223697);
double r223699 = fma(r223685, r223688, r223698);
double r223700 = fma(r223669, r223684, r223699);
double r223701 = fma(r223680, r223681, r223700);
double r223702 = r223673 - r223701;
double r223703 = r223679 / r223619;
double r223704 = r223703 * r223681;
double r223705 = 0.078125;
double r223706 = r223656 / r223661;
double r223707 = r223706 / r223659;
double r223708 = r223705 * r223707;
double r223709 = r223704 + r223708;
double r223710 = r223709 * r223675;
double r223711 = r223702 + r223710;
double r223712 = r223623 + r223625;
double r223713 = r223619 / r223712;
double r223714 = log1p(r223712);
double r223715 = expm1(r223714);
double r223716 = r223622 / r223715;
double r223717 = r223713 - r223716;
double r223718 = r223637 * r223717;
double r223719 = r223640 ? r223711 : r223718;
double r223720 = r223617 ? r223638 : r223719;
return r223720;
}



Bits error versus x
if x < -2.80323178038379e-08Initial program 1.5
Simplified1.5
rmApplied flip--1.5
Simplified0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied distribute-lft-out0.5
Applied times-frac0.5
Simplified0.5
rmApplied div-sub0.5
Simplified0.5
Simplified0.5
rmApplied flip3-+1.5
Applied associate-/r/0.6
Applied flip3-+2.0
Applied associate-/r/0.6
Applied distribute-rgt-out--0.5
Simplified0.5
if -2.80323178038379e-08 < x < 8.055965450229695e-05Initial program 31.4
Simplified31.4
rmApplied flip--31.4
Simplified31.4
Simplified31.4
Taylor expanded around 0 31.4
Simplified27.9
if 8.055965450229695e-05 < x Initial program 1.1
Simplified1.1
rmApplied flip--1.2
Simplified0.2
Simplified0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.2
Applied distribute-lft-out0.2
Applied times-frac0.2
Simplified0.2
rmApplied div-sub0.2
Simplified0.2
Simplified0.2
rmApplied expm1-log1p-u0.2
Simplified0.2
Final simplification13.9
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1.0 (sqrt (* 0.5 (+ 1.0 (/ 1.0 (hypot 1.0 x)))))))