1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{1 \cdot 1 - \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}double f(double x) {
double r330745 = 1.0;
double r330746 = 0.5;
double r330747 = x;
double r330748 = hypot(r330745, r330747);
double r330749 = r330745 / r330748;
double r330750 = r330745 + r330749;
double r330751 = r330746 * r330750;
double r330752 = sqrt(r330751);
double r330753 = r330745 - r330752;
return r330753;
}
double f(double x) {
double r330754 = 1.0;
double r330755 = r330754 * r330754;
double r330756 = x;
double r330757 = hypot(r330754, r330756);
double r330758 = r330754 / r330757;
double r330759 = r330754 + r330758;
double r330760 = 0.5;
double r330761 = r330759 * r330760;
double r330762 = r330755 - r330761;
double r330763 = r330760 * r330759;
double r330764 = sqrt(r330763);
double r330765 = r330754 + r330764;
double r330766 = r330762 / r330765;
return r330766;
}



Bits error versus x
Results
Initial program 15.5
rmApplied flip--15.5
Simplified15.0
Final simplification15.0
herbie shell --seed 2019235 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))