\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 r16238 = 0.5;
double r16239 = /* ERROR: no posit support in C */;
double r16240 = 2.0;
double r16241 = /* ERROR: no posit support in C */;
double r16242 = re;
double r16243 = r16242 * r16242;
double r16244 = im;
double r16245 = r16244 * r16244;
double r16246 = r16243 + r16245;
double r16247 = sqrt(r16246);
double r16248 = r16247 + r16242;
double r16249 = r16241 * r16248;
double r16250 = sqrt(r16249);
double r16251 = r16239 * r16250;
return r16251;
}
double f(double re, double im) {
double r16252 = 0.5;
double r16253 = 2.0;
double r16254 = re;
double r16255 = r16254 * r16254;
double r16256 = im;
double r16257 = r16256 * r16256;
double r16258 = r16255 + r16257;
double r16259 = sqrt(r16258);
double r16260 = r16259 + r16254;
double r16261 = r16253 * r16260;
double r16262 = sqrt(r16261);
double r16263 = r16252 * r16262;
return r16263;
}



Bits error versus re



Bits error versus im
Initial program 2.1
Final simplification2.1
herbie shell --seed 2019125 +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)))))