1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{0.5}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}} - \frac{\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 r124572 = 1.0;
double r124573 = 0.5;
double r124574 = x;
double r124575 = hypot(r124572, r124574);
double r124576 = r124572 / r124575;
double r124577 = r124572 + r124576;
double r124578 = r124573 * r124577;
double r124579 = sqrt(r124578);
double r124580 = r124572 - r124579;
return r124580;
}
double f(double x) {
double r124581 = 0.5;
double r124582 = 1.0;
double r124583 = x;
double r124584 = hypot(r124582, r124583);
double r124585 = r124582 / r124584;
double r124586 = r124582 + r124585;
double r124587 = r124581 * r124586;
double r124588 = sqrt(r124587);
double r124589 = r124582 + r124588;
double r124590 = r124581 / r124589;
double r124591 = r124581 / r124584;
double r124592 = r124591 / r124589;
double r124593 = r124590 - r124592;
return r124593;
}



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