1 - \sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{1 - \sqrt{\left(\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}\right) \cdot \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}} \cdot \sqrt{\left(\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}\right) \cdot \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}}}{1 + \left(\left(\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}\right) + \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\mathsf{hypot}\left(1, x\right)}}\right)}double f(double x) {
double r5152286 = 1.0;
double r5152287 = 0.5;
double r5152288 = x;
double r5152289 = hypot(r5152286, r5152288);
double r5152290 = r5152286 / r5152289;
double r5152291 = r5152286 + r5152290;
double r5152292 = r5152287 * r5152291;
double r5152293 = sqrt(r5152292);
double r5152294 = r5152286 - r5152293;
return r5152294;
}
double f(double x) {
double r5152295 = 1.0;
double r5152296 = 0.5;
double r5152297 = x;
double r5152298 = hypot(r5152295, r5152297);
double r5152299 = r5152296 / r5152298;
double r5152300 = r5152296 + r5152299;
double r5152301 = sqrt(r5152300);
double r5152302 = r5152300 * r5152301;
double r5152303 = sqrt(r5152302);
double r5152304 = r5152303 * r5152303;
double r5152305 = r5152295 - r5152304;
double r5152306 = r5152300 + r5152301;
double r5152307 = r5152295 + r5152306;
double r5152308 = r5152305 / r5152307;
return r5152308;
}



Bits error versus x
Results
Initial program 15.6
Simplified15.6
rmApplied flip3--15.9
Simplified15.6
Simplified15.1
rmApplied add-sqr-sqrt15.1
Final simplification15.1
herbie shell --seed 2019164
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1 (sqrt (* 1/2 (+ 1 (/ 1 (hypot 1 x)))))))