1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\frac{1 \cdot \left(1 - 0.5\right) - 0.5 \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)}}{\sqrt{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}}{\sqrt{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}}double f(double x) {
double r453 = 1.0;
double r454 = 0.5;
double r455 = x;
double r456 = hypot(r453, r455);
double r457 = r453 / r456;
double r458 = r453 + r457;
double r459 = r454 * r458;
double r460 = sqrt(r459);
double r461 = r453 - r460;
return r461;
}
double f(double x) {
double r462 = 1.0;
double r463 = 0.5;
double r464 = r462 - r463;
double r465 = r462 * r464;
double r466 = x;
double r467 = hypot(r462, r466);
double r468 = r462 / r467;
double r469 = r463 * r468;
double r470 = r465 - r469;
double r471 = r462 + r468;
double r472 = r463 * r471;
double r473 = sqrt(r472);
double r474 = r462 + r473;
double r475 = sqrt(r474);
double r476 = r470 / r475;
double r477 = r476 / r475;
return r477;
}



Bits error versus x
Results
Initial program 15.0
rmApplied flip--15.0
Simplified14.5
rmApplied add-sqr-sqrt14.9
Applied associate-/r*14.5
Final simplification14.5
herbie shell --seed 2020025
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))