1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\frac{1 \cdot \left(\left(1 \cdot 1 - 0.5 \cdot 0.5\right) \cdot \mathsf{hypot}\left(1, x\right) - 0.5 \cdot \left(0.5 + 1\right)\right)}{\left(1 + 0.5\right) \cdot \mathsf{hypot}\left(1, x\right)}}{\sqrt{0.5} \cdot \sqrt{1 \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)} + 1} + 1}double f(double x) {
double r285509 = 1.0;
double r285510 = 0.5;
double r285511 = x;
double r285512 = hypot(r285509, r285511);
double r285513 = r285509 / r285512;
double r285514 = r285509 + r285513;
double r285515 = r285510 * r285514;
double r285516 = sqrt(r285515);
double r285517 = r285509 - r285516;
return r285517;
}
double f(double x) {
double r285518 = 1.0;
double r285519 = r285518 * r285518;
double r285520 = 0.5;
double r285521 = r285520 * r285520;
double r285522 = r285519 - r285521;
double r285523 = x;
double r285524 = hypot(r285518, r285523);
double r285525 = r285522 * r285524;
double r285526 = r285520 + r285518;
double r285527 = r285520 * r285526;
double r285528 = r285525 - r285527;
double r285529 = r285518 * r285528;
double r285530 = r285518 + r285520;
double r285531 = r285530 * r285524;
double r285532 = r285529 / r285531;
double r285533 = sqrt(r285520);
double r285534 = 1.0;
double r285535 = r285534 / r285524;
double r285536 = r285518 * r285535;
double r285537 = r285536 + r285518;
double r285538 = sqrt(r285537);
double r285539 = r285533 * r285538;
double r285540 = r285539 + r285518;
double r285541 = r285532 / r285540;
return r285541;
}



Bits error versus x
Results
Initial program 15.2
rmApplied flip--15.2
Simplified14.7
rmApplied associate-*r/14.7
Applied flip--14.7
Applied associate-*r/14.7
Applied frac-sub14.7
Simplified14.7
Taylor expanded around 0 14.7
Final simplification14.7
herbie shell --seed 2020056
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))