1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}e^{\log \left(\frac{1 \cdot 1 - 0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}{1 + \sqrt{\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5}}\right)}double f(double x) {
double r193120 = 1.0;
double r193121 = 0.5;
double r193122 = x;
double r193123 = hypot(r193120, r193122);
double r193124 = r193120 / r193123;
double r193125 = r193120 + r193124;
double r193126 = r193121 * r193125;
double r193127 = sqrt(r193126);
double r193128 = r193120 - r193127;
return r193128;
}
double f(double x) {
double r193129 = 1.0;
double r193130 = r193129 * r193129;
double r193131 = 0.5;
double r193132 = x;
double r193133 = hypot(r193129, r193132);
double r193134 = r193129 / r193133;
double r193135 = r193129 + r193134;
double r193136 = r193131 * r193135;
double r193137 = r193130 - r193136;
double r193138 = r193135 * r193131;
double r193139 = sqrt(r193138);
double r193140 = r193129 + r193139;
double r193141 = r193137 / r193140;
double r193142 = log(r193141);
double r193143 = exp(r193142);
return r193143;
}



Bits error versus x
Results
Initial program 15.3
rmApplied flip--15.3
Simplified14.8
Simplified14.8
rmApplied add-exp-log14.8
Applied add-exp-log14.8
Applied div-exp14.8
Simplified14.8
Final simplification14.8
herbie shell --seed 2020047
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
:precision binary64
(- 1 (sqrt (* 0.5 (+ 1 (/ 1 (hypot 1 x)))))))