1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{1 \cdot \left(1 - 0.5\right) - 0.5 \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)}}{1 + \frac{\sqrt{0.5 \cdot \left({1}^{3} + {\left(\frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}^{3}\right)}}{\sqrt{1 \cdot 1 + \left(\frac{1}{\mathsf{hypot}\left(1, x\right)} \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)} - 1 \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}double f(double x) {
double r152978 = 1.0;
double r152979 = 0.5;
double r152980 = x;
double r152981 = hypot(r152978, r152980);
double r152982 = r152978 / r152981;
double r152983 = r152978 + r152982;
double r152984 = r152979 * r152983;
double r152985 = sqrt(r152984);
double r152986 = r152978 - r152985;
return r152986;
}
double f(double x) {
double r152987 = 1.0;
double r152988 = 0.5;
double r152989 = r152987 - r152988;
double r152990 = r152987 * r152989;
double r152991 = x;
double r152992 = hypot(r152987, r152991);
double r152993 = r152987 / r152992;
double r152994 = r152988 * r152993;
double r152995 = r152990 - r152994;
double r152996 = 3.0;
double r152997 = pow(r152987, r152996);
double r152998 = pow(r152993, r152996);
double r152999 = r152997 + r152998;
double r153000 = r152988 * r152999;
double r153001 = sqrt(r153000);
double r153002 = r152987 * r152987;
double r153003 = r152993 * r152993;
double r153004 = r152987 * r152993;
double r153005 = r153003 - r153004;
double r153006 = r153002 + r153005;
double r153007 = sqrt(r153006);
double r153008 = r153001 / r153007;
double r153009 = r152987 + r153008;
double r153010 = r152995 / r153009;
return r153010;
}



Bits error versus x
Results
Initial program 15.3
rmApplied flip--15.3
Simplified14.8
rmApplied flip3-+14.8
Applied associate-*r/14.8
Applied sqrt-div14.8
Final simplification14.8
herbie shell --seed 2020036
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))