1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\begin{array}{l}
\mathbf{if}\;x \le -0.002575588276148594:\\
\;\;\;\;\frac{e^{\log \left(\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)}}\\
\mathbf{elif}\;x \le 8.33977184994014019 \cdot 10^{-5}:\\
\;\;\;\;\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{{e}^{\left(\log \left(\mathsf{fma}\left(-0.5, 1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}, 1 \cdot 1\right)\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 r242562 = 1.0;
double r242563 = 0.5;
double r242564 = x;
double r242565 = hypot(r242562, r242564);
double r242566 = r242562 / r242565;
double r242567 = r242562 + r242566;
double r242568 = r242563 * r242567;
double r242569 = sqrt(r242568);
double r242570 = r242562 - r242569;
return r242570;
}
double f(double x) {
double r242571 = x;
double r242572 = -0.0025755882761485938;
bool r242573 = r242571 <= r242572;
double r242574 = 0.5;
double r242575 = -r242574;
double r242576 = 1.0;
double r242577 = hypot(r242576, r242571);
double r242578 = r242576 / r242577;
double r242579 = r242576 + r242578;
double r242580 = r242576 * r242576;
double r242581 = fma(r242575, r242579, r242580);
double r242582 = log(r242581);
double r242583 = exp(r242582);
double r242584 = r242574 * r242579;
double r242585 = sqrt(r242584);
double r242586 = r242576 + r242585;
double r242587 = r242583 / r242586;
double r242588 = 8.33977184994014e-05;
bool r242589 = r242571 <= r242588;
double r242590 = 0.25;
double r242591 = 2.0;
double r242592 = pow(r242571, r242591);
double r242593 = sqrt(r242576);
double r242594 = 3.0;
double r242595 = pow(r242593, r242594);
double r242596 = r242592 / r242595;
double r242597 = 1.0;
double r242598 = r242597 / r242593;
double r242599 = 0.1875;
double r242600 = 4.0;
double r242601 = pow(r242571, r242600);
double r242602 = 5.0;
double r242603 = pow(r242593, r242602);
double r242604 = r242601 / r242603;
double r242605 = r242599 * r242604;
double r242606 = fma(r242574, r242598, r242605);
double r242607 = r242574 - r242606;
double r242608 = fma(r242590, r242596, r242607);
double r242609 = r242608 / r242586;
double r242610 = exp(1.0);
double r242611 = pow(r242610, r242582);
double r242612 = r242611 / r242586;
double r242613 = r242589 ? r242609 : r242612;
double r242614 = r242573 ? r242587 : r242613;
return r242614;
}



Bits error versus x
if x < -0.0025755882761485938Initial program 1.0
rmApplied flip--1.0
Simplified0.1
rmApplied add-exp-log0.1
if -0.0025755882761485938 < x < 8.33977184994014e-05Initial program 30.3
rmApplied flip--30.3
Simplified30.3
Taylor expanded around 0 30.3
Simplified0.2
if 8.33977184994014e-05 < x Initial program 1.2
rmApplied flip--1.2
Simplified0.2
rmApplied add-exp-log0.2
rmApplied pow10.2
Applied log-pow0.2
Applied exp-prod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020039 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))