\left(0.5\right) \cdot \left(\sqrt{\left(\left(2.0\right) \cdot \left(\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 r733090 = 0.5;
double r733091 = /* ERROR: no posit support in C */;
double r733092 = 2.0;
double r733093 = /* ERROR: no posit support in C */;
double r733094 = re;
double r733095 = r733094 * r733094;
double r733096 = im;
double r733097 = r733096 * r733096;
double r733098 = r733095 + r733097;
double r733099 = sqrt(r733098);
double r733100 = r733099 - r733094;
double r733101 = r733093 * r733100;
double r733102 = sqrt(r733101);
double r733103 = r733091 * r733102;
return r733103;
}
double f(double re, double im) {
double r733104 = 0.5;
double r733105 = 2.0;
double r733106 = re;
double r733107 = r733106 * r733106;
double r733108 = im;
double r733109 = r733108 * r733108;
double r733110 = r733107 + r733109;
double r733111 = sqrt(r733110);
double r733112 = r733111 - r733106;
double r733113 = r733105 * r733112;
double r733114 = sqrt(r733113);
double r733115 = r733104 * r733114;
return r733115;
}



Bits error versus re



Bits error versus im
Initial program 2.0
Final simplification2.0
herbie shell --seed 2019153
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(*.p16 (real->posit16 0.5) (sqrt.p16 (*.p16 (real->posit16 2.0) (-.p16 (sqrt.p16 (+.p16 (*.p16 re re) (*.p16 im im))) re)))))