1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\frac{{0.5}^{3} \cdot {0.5}^{3} - {\left(\frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)}^{3} \cdot {\left(\frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)}^{3}}{\left(0.5 \cdot 0.5 + \frac{0.5}{\mathsf{hypot}\left(1, x\right)} \cdot \left(0.5 + \frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)\right) \cdot \left({0.5}^{3} + {\left(\frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)}^{3}\right)} \cdot 1}{1 + \sqrt{0.5} \cdot \sqrt{1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}}}double f(double x) {
double r25015 = 1.0;
double r25016 = 0.5;
double r25017 = x;
double r25018 = hypot(r25015, r25017);
double r25019 = r25015 / r25018;
double r25020 = r25015 + r25019;
double r25021 = r25016 * r25020;
double r25022 = sqrt(r25021);
double r25023 = r25015 - r25022;
return r25023;
}
double f(double x) {
double r25024 = 0.5;
double r25025 = 3.0;
double r25026 = pow(r25024, r25025);
double r25027 = r25026 * r25026;
double r25028 = 1.0;
double r25029 = x;
double r25030 = hypot(r25028, r25029);
double r25031 = r25024 / r25030;
double r25032 = pow(r25031, r25025);
double r25033 = r25032 * r25032;
double r25034 = r25027 - r25033;
double r25035 = r25024 * r25024;
double r25036 = r25024 + r25031;
double r25037 = r25031 * r25036;
double r25038 = r25035 + r25037;
double r25039 = r25026 + r25032;
double r25040 = r25038 * r25039;
double r25041 = r25034 / r25040;
double r25042 = r25041 * r25028;
double r25043 = sqrt(r25024);
double r25044 = r25028 / r25030;
double r25045 = r25028 + r25044;
double r25046 = sqrt(r25045);
double r25047 = r25043 * r25046;
double r25048 = r25028 + r25047;
double r25049 = r25042 / r25048;
return r25049;
}



Bits error versus x
Results
Initial program 15.5
rmApplied flip--15.5
Simplified15.0
Taylor expanded around 0 15.0
Simplified15.0
rmApplied flip3--15.0
Simplified15.0
rmApplied flip--15.0
Applied associate-/l/15.0
Final simplification15.0
herbie shell --seed 2019310
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))