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 r278773 = 1.0;
double r278774 = 0.5;
double r278775 = x;
double r278776 = hypot(r278773, r278775);
double r278777 = r278773 / r278776;
double r278778 = r278773 + r278777;
double r278779 = r278774 * r278778;
double r278780 = sqrt(r278779);
double r278781 = r278773 - r278780;
return r278781;
}
double f(double x) {
double r278782 = x;
double r278783 = -8.830421450453418e-05;
bool r278784 = r278782 <= r278783;
double r278785 = 0.5;
double r278786 = -r278785;
double r278787 = 1.0;
double r278788 = hypot(r278787, r278782);
double r278789 = r278787 / r278788;
double r278790 = r278787 + r278789;
double r278791 = r278787 * r278787;
double r278792 = fma(r278786, r278790, r278791);
double r278793 = r278785 * r278790;
double r278794 = sqrt(r278793);
double r278795 = r278787 + r278794;
double r278796 = r278792 / r278795;
double r278797 = 0.0025906881160018247;
bool r278798 = r278782 <= r278797;
double r278799 = 0.25;
double r278800 = 2.0;
double r278801 = pow(r278782, r278800);
double r278802 = sqrt(r278787);
double r278803 = 3.0;
double r278804 = pow(r278802, r278803);
double r278805 = r278801 / r278804;
double r278806 = 1.0;
double r278807 = r278806 / r278802;
double r278808 = 0.1875;
double r278809 = 4.0;
double r278810 = pow(r278782, r278809);
double r278811 = 5.0;
double r278812 = pow(r278802, r278811);
double r278813 = r278810 / r278812;
double r278814 = r278808 * r278813;
double r278815 = fma(r278785, r278807, r278814);
double r278816 = r278785 - r278815;
double r278817 = fma(r278799, r278805, r278816);
double r278818 = r278817 / r278795;
double r278819 = exp(r278792);
double r278820 = log(r278819);
double r278821 = r278820 / r278795;
double r278822 = r278798 ? r278818 : r278821;
double r278823 = r278784 ? r278796 : r278822;
return r278823;
}



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