1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\frac{0.5 \cdot 0.5 - \frac{0.5}{\mathsf{hypot}\left(1, x\right)} \cdot \frac{0.5}{\mathsf{hypot}\left(1, x\right)}}{0.5 + \frac{0.5}{\mathsf{hypot}\left(1, x\right)}}}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}double f(double x) {
double r95388 = 1.0;
double r95389 = 0.5;
double r95390 = x;
double r95391 = hypot(r95388, r95390);
double r95392 = r95388 / r95391;
double r95393 = r95388 + r95392;
double r95394 = r95389 * r95393;
double r95395 = sqrt(r95394);
double r95396 = r95388 - r95395;
return r95396;
}
double f(double x) {
double r95397 = 0.5;
double r95398 = r95397 * r95397;
double r95399 = 1.0;
double r95400 = x;
double r95401 = hypot(r95399, r95400);
double r95402 = r95397 / r95401;
double r95403 = r95402 * r95402;
double r95404 = r95398 - r95403;
double r95405 = r95397 + r95402;
double r95406 = r95404 / r95405;
double r95407 = r95399 / r95401;
double r95408 = r95399 + r95407;
double r95409 = r95397 * r95408;
double r95410 = sqrt(r95409);
double r95411 = r95399 + r95410;
double r95412 = r95406 / r95411;
return r95412;
}



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