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 r231165 = 1.0;
double r231166 = 0.5;
double r231167 = x;
double r231168 = hypot(r231165, r231167);
double r231169 = r231165 / r231168;
double r231170 = r231165 + r231169;
double r231171 = r231166 * r231170;
double r231172 = sqrt(r231171);
double r231173 = r231165 - r231172;
return r231173;
}
double f(double x) {
double r231174 = 1.0;
double r231175 = 0.5;
double r231176 = r231174 - r231175;
double r231177 = r231174 * r231176;
double r231178 = x;
double r231179 = hypot(r231174, r231178);
double r231180 = r231174 / r231179;
double r231181 = r231175 * r231180;
double r231182 = r231177 - r231181;
double r231183 = exp(r231182);
double r231184 = log(r231183);
double r231185 = r231174 + r231180;
double r231186 = r231175 * r231185;
double r231187 = sqrt(r231186);
double r231188 = r231174 + r231187;
double r231189 = r231184 / r231188;
return r231189;
}



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