\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{\left(\mathsf{qma}\left(\left(\left(re \cdot re\right)\right), im, im\right)\right)} - re\right)}double f(double re, double im) {
double r567019 = 0.5;
double r567020 = /* ERROR: no posit support in C */;
double r567021 = 2.0;
double r567022 = /* ERROR: no posit support in C */;
double r567023 = re;
double r567024 = r567023 * r567023;
double r567025 = im;
double r567026 = r567025 * r567025;
double r567027 = r567024 + r567026;
double r567028 = sqrt(r567027);
double r567029 = r567028 - r567023;
double r567030 = r567022 * r567029;
double r567031 = sqrt(r567030);
double r567032 = r567020 * r567031;
return r567032;
}
double f(double re, double im) {
double r567033 = 0.5;
double r567034 = 2.0;
double r567035 = re;
double r567036 = r567035 * r567035;
double r567037 = /*Error: no posit support in C */;
double r567038 = im;
double r567039 = /*Error: no posit support in C */;
double r567040 = /*Error: no posit support in C */;
double r567041 = sqrt(r567040);
double r567042 = r567041 - r567035;
double r567043 = r567034 * r567042;
double r567044 = sqrt(r567043);
double r567045 = r567033 * r567044;
return r567045;
}



Bits error versus re



Bits error versus im
Initial program 2.1
rmApplied introduce-quire2.1
Applied insert-quire-fdp-add2.0
Final simplification2.0
herbie shell --seed 2019155
(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)))))