1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\sqrt{1 \cdot \left(1 \cdot 1\right) - \sqrt{0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)} \cdot \left(0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)\right)}}{\frac{1 \cdot 1 + \left(\sqrt{0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)} \cdot 1 + 0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)\right)}{\sqrt{1 \cdot \left(1 \cdot 1\right) - \sqrt{0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)} \cdot \left(0.5 \cdot \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} + 1\right)\right)}}}double f(double x) {
double r7007773 = 1.0;
double r7007774 = 0.5;
double r7007775 = x;
double r7007776 = hypot(r7007773, r7007775);
double r7007777 = r7007773 / r7007776;
double r7007778 = r7007773 + r7007777;
double r7007779 = r7007774 * r7007778;
double r7007780 = sqrt(r7007779);
double r7007781 = r7007773 - r7007780;
return r7007781;
}
double f(double x) {
double r7007782 = 1.0;
double r7007783 = r7007782 * r7007782;
double r7007784 = r7007782 * r7007783;
double r7007785 = 0.5;
double r7007786 = x;
double r7007787 = hypot(r7007782, r7007786);
double r7007788 = r7007782 / r7007787;
double r7007789 = r7007788 + r7007782;
double r7007790 = r7007785 * r7007789;
double r7007791 = sqrt(r7007790);
double r7007792 = r7007791 * r7007790;
double r7007793 = r7007784 - r7007792;
double r7007794 = sqrt(r7007793);
double r7007795 = r7007791 * r7007782;
double r7007796 = r7007795 + r7007790;
double r7007797 = r7007783 + r7007796;
double r7007798 = r7007797 / r7007794;
double r7007799 = r7007794 / r7007798;
return r7007799;
}



Bits error versus x
Results
Initial program 15.6
rmApplied flip3--15.8
Simplified15.6
Simplified15.1
rmApplied add-sqr-sqrt15.1
Applied associate-/l*15.1
Final simplification15.1
herbie shell --seed 2019170
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1.0 (sqrt (* 0.5 (+ 1.0 (/ 1.0 (hypot 1.0 x)))))))