\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{\sqrt{re \cdot re + im \cdot im} \cdot 2.0 + re \cdot 2.0}double f(double re, double im) {
double r15119 = 0.5;
double r15120 = /* ERROR: no posit support in C */;
double r15121 = 2.0;
double r15122 = /* ERROR: no posit support in C */;
double r15123 = re;
double r15124 = r15123 * r15123;
double r15125 = im;
double r15126 = r15125 * r15125;
double r15127 = r15124 + r15126;
double r15128 = sqrt(r15127);
double r15129 = r15128 + r15123;
double r15130 = r15122 * r15129;
double r15131 = sqrt(r15130);
double r15132 = r15120 * r15131;
return r15132;
}
double f(double re, double im) {
double r15133 = 0.5;
double r15134 = re;
double r15135 = r15134 * r15134;
double r15136 = im;
double r15137 = r15136 * r15136;
double r15138 = r15135 + r15137;
double r15139 = sqrt(r15138);
double r15140 = 2.0;
double r15141 = r15139 * r15140;
double r15142 = r15134 * r15140;
double r15143 = r15141 + r15142;
double r15144 = sqrt(r15143);
double r15145 = r15133 * r15144;
return r15145;
}



Bits error versus re



Bits error versus im
Initial program 2.0
rmApplied distribute-rgt-in2.1
Final simplification2.1
herbie shell --seed 2019124
(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)))))