\left(0.5\right) \cdot \left(\sqrt{\left(\left(2.0\right) \cdot \left(\frac{\left(\sqrt{\left(\frac{\left(re \cdot re\right)}{\left(im \cdot im\right)}\right)}\right)}{re}\right)\right)}\right)0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}double f(double re, double im) {
double r15285 = 0.5;
double r15286 = /* ERROR: no posit support in C */;
double r15287 = 2.0;
double r15288 = /* ERROR: no posit support in C */;
double r15289 = re;
double r15290 = r15289 * r15289;
double r15291 = im;
double r15292 = r15291 * r15291;
double r15293 = r15290 + r15292;
double r15294 = sqrt(r15293);
double r15295 = r15294 + r15289;
double r15296 = r15288 * r15295;
double r15297 = sqrt(r15296);
double r15298 = r15286 * r15297;
return r15298;
}
double f(double re, double im) {
double r15299 = 0.5;
double r15300 = 2.0;
double r15301 = re;
double r15302 = r15301 * r15301;
double r15303 = im;
double r15304 = r15303 * r15303;
double r15305 = r15302 + r15304;
double r15306 = sqrt(r15305);
double r15307 = r15306 + r15301;
double r15308 = r15300 * r15307;
double r15309 = sqrt(r15308);
double r15310 = r15299 * r15309;
return r15310;
}



Bits error versus re



Bits error versus im
Initial program 2.1
Final simplification2.1
herbie shell --seed 2019107 +o rules:numerics
(FPCore (re im)
:name "math.sqrt on complex, real part"
(*.p16 (real->posit16 0.5) (sqrt.p16 (*.p16 (real->posit16 2.0) (+.p16 (sqrt.p16 (+.p16 (*.p16 re re) (*.p16 im im))) re)))))