1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\log \left(e^{1 \cdot \left(1 - 0.5\right) - 0.5 \cdot \frac{1}{\mathsf{hypot}\left(1, x\right)}}\right)}{1 + \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}}double f(double x) {
double r204489 = 1.0;
double r204490 = 0.5;
double r204491 = x;
double r204492 = hypot(r204489, r204491);
double r204493 = r204489 / r204492;
double r204494 = r204489 + r204493;
double r204495 = r204490 * r204494;
double r204496 = sqrt(r204495);
double r204497 = r204489 - r204496;
return r204497;
}
double f(double x) {
double r204498 = 1.0;
double r204499 = 0.5;
double r204500 = r204498 - r204499;
double r204501 = r204498 * r204500;
double r204502 = x;
double r204503 = hypot(r204498, r204502);
double r204504 = r204498 / r204503;
double r204505 = r204499 * r204504;
double r204506 = r204501 - r204505;
double r204507 = exp(r204506);
double r204508 = log(r204507);
double r204509 = r204498 + r204504;
double r204510 = r204499 * r204509;
double r204511 = sqrt(r204510);
double r204512 = r204498 + r204511;
double r204513 = r204508 / r204512;
return r204513;
}



Bits error versus x
Results
Initial program 15.8
rmApplied flip--15.8
Simplified15.3
rmApplied add-log-exp15.4
Applied add-log-exp15.4
Applied diff-log15.4
Simplified15.4
Final simplification15.4
herbie shell --seed 2019353
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))