1 - \sqrt{0.5 \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)}\frac{\log \left(e^{\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left(1, 1, \left(-0.5\right) \cdot \left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right)\right)\right)\right)}\right)}{\sqrt{\left(1 + \frac{1}{\mathsf{hypot}\left(1, x\right)}\right) \cdot 0.5} + 1}double f(double x) {
double r176346 = 1.0;
double r176347 = 0.5;
double r176348 = x;
double r176349 = hypot(r176346, r176348);
double r176350 = r176346 / r176349;
double r176351 = r176346 + r176350;
double r176352 = r176347 * r176351;
double r176353 = sqrt(r176352);
double r176354 = r176346 - r176353;
return r176354;
}
double f(double x) {
double r176355 = 1.0;
double r176356 = 0.5;
double r176357 = -r176356;
double r176358 = x;
double r176359 = hypot(r176355, r176358);
double r176360 = r176355 / r176359;
double r176361 = r176355 + r176360;
double r176362 = r176357 * r176361;
double r176363 = fma(r176355, r176355, r176362);
double r176364 = log1p(r176363);
double r176365 = expm1(r176364);
double r176366 = exp(r176365);
double r176367 = log(r176366);
double r176368 = r176361 * r176356;
double r176369 = sqrt(r176368);
double r176370 = r176369 + r176355;
double r176371 = r176367 / r176370;
return r176371;
}



Bits error versus x
Initial program 15.3
rmApplied flip--15.3
Simplified14.8
Simplified14.8
rmApplied add-log-exp14.9
Applied add-log-exp14.9
Applied diff-log15.3
Simplified14.9
rmApplied expm1-log1p-u14.9
Simplified14.9
Final simplification14.9
herbie shell --seed 2019196 +o rules:numerics
(FPCore (x)
:name "Given's Rotation SVD example, simplified"
(- 1.0 (sqrt (* 0.5 (+ 1.0 (/ 1.0 (hypot 1.0 x)))))))