1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -9.494777107334507744267060314058426229167 \cdot 10^{-5}:\\
\;\;\;\;\frac{\frac{{1}^{6} \cdot {1}^{6} - {\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3} \cdot {\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3}}{\frac{\mathsf{fma}\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5, \mathsf{fma}\left(1, 1, 0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)\right), {1}^{4}\right) \cdot \left({\left({1}^{6}\right)}^{3} + {\left({\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3}\right)}^{3}\right)}{{1}^{6} \cdot {1}^{6} + \left({\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3} \cdot {\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3} - {1}^{6} \cdot {\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3}\right)}}}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{elif}\;x \le 0.002129030310090778213560902543122210772708:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{{x}^{2}}{{\left(\sqrt{1}\right)}^{3}}, 0.25, 0.5 - \mathsf{fma}\left(0.1875, \frac{{x}^{4}}{{\left(\sqrt{1}\right)}^{5}}, \frac{0.5}{\sqrt{1}}\right)\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{{1}^{6}} + \sqrt{{\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3}}}{\frac{\mathsf{fma}\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5, \mathsf{fma}\left(1, 1, 0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)\right), {1}^{4}\right)}{\sqrt{{1}^{6}} - \sqrt{{\left(\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5\right)}^{3}}}}}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}\\
\end{array}double f(double x) {
double r282811 = 1.0;
double r282812 = 0.5;
double r282813 = x;
double r282814 = hypot(r282811, r282813);
double r282815 = r282811 / r282814;
double r282816 = r282811 + r282815;
double r282817 = r282812 * r282816;
double r282818 = sqrt(r282817);
double r282819 = r282811 - r282818;
return r282819;
}
double f(double x) {
double r282820 = x;
double r282821 = -9.494777107334508e-05;
bool r282822 = r282820 <= r282821;
double r282823 = 1.0;
double r282824 = 6.0;
double r282825 = pow(r282823, r282824);
double r282826 = r282825 * r282825;
double r282827 = hypot(r282823, r282820);
double r282828 = r282823 / r282827;
double r282829 = r282823 + r282828;
double r282830 = 0.5;
double r282831 = r282829 * r282830;
double r282832 = 3.0;
double r282833 = pow(r282831, r282832);
double r282834 = r282833 * r282833;
double r282835 = r282826 - r282834;
double r282836 = r282830 * r282829;
double r282837 = fma(r282823, r282823, r282836);
double r282838 = 4.0;
double r282839 = pow(r282823, r282838);
double r282840 = fma(r282831, r282837, r282839);
double r282841 = pow(r282825, r282832);
double r282842 = pow(r282833, r282832);
double r282843 = r282841 + r282842;
double r282844 = r282840 * r282843;
double r282845 = r282825 * r282833;
double r282846 = r282834 - r282845;
double r282847 = r282826 + r282846;
double r282848 = r282844 / r282847;
double r282849 = r282835 / r282848;
double r282850 = sqrt(r282836);
double r282851 = r282823 + r282850;
double r282852 = r282849 / r282851;
double r282853 = 0.002129030310090778;
bool r282854 = r282820 <= r282853;
double r282855 = 2.0;
double r282856 = pow(r282820, r282855);
double r282857 = sqrt(r282823);
double r282858 = pow(r282857, r282832);
double r282859 = r282856 / r282858;
double r282860 = 0.25;
double r282861 = 0.1875;
double r282862 = pow(r282820, r282838);
double r282863 = 5.0;
double r282864 = pow(r282857, r282863);
double r282865 = r282862 / r282864;
double r282866 = r282830 / r282857;
double r282867 = fma(r282861, r282865, r282866);
double r282868 = r282830 - r282867;
double r282869 = fma(r282859, r282860, r282868);
double r282870 = r282869 / r282851;
double r282871 = sqrt(r282825);
double r282872 = sqrt(r282833);
double r282873 = r282871 + r282872;
double r282874 = r282871 - r282872;
double r282875 = r282840 / r282874;
double r282876 = r282873 / r282875;
double r282877 = r282876 / r282851;
double r282878 = r282854 ? r282870 : r282877;
double r282879 = r282822 ? r282852 : r282878;
return r282879;
}



Bits error versus x
if x < -9.494777107334508e-05Initial program 1.2
rmApplied flip--1.2
Simplified0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
rmApplied flip--0.2
Applied associate-/l/0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
if -9.494777107334508e-05 < x < 0.002129030310090778Initial program 30.0
rmApplied flip--30.0
Simplified30.0
Taylor expanded around 0 30.0
Simplified0.2
if 0.002129030310090778 < x Initial program 1.0
rmApplied flip--1.0
Simplified0.1
rmApplied flip3--0.1
Simplified0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied add-sqr-sqrt0.1
Applied difference-of-squares0.1
Applied associate-/l*0.1
Final simplification0.2
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))