\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)\left(0.5\right) \cdot \left(\sqrt{\left(\left(2.0\right) \cdot \left(\left(\sqrt{\left(\left(\mathsf{qma}\left(\left(\left(re \cdot re\right)\right), im, im\right)\right)\right)}\right) - re\right)\right)}\right)double f(double re, double im) {
double r1190888 = 0.5;
double r1190889 = /* ERROR: no posit support in C */;
double r1190890 = 2.0;
double r1190891 = /* ERROR: no posit support in C */;
double r1190892 = re;
double r1190893 = r1190892 * r1190892;
double r1190894 = im;
double r1190895 = r1190894 * r1190894;
double r1190896 = r1190893 + r1190895;
double r1190897 = sqrt(r1190896);
double r1190898 = r1190897 - r1190892;
double r1190899 = r1190891 * r1190898;
double r1190900 = sqrt(r1190899);
double r1190901 = r1190889 * r1190900;
return r1190901;
}
double f(double re, double im) {
double r1190902 = 0.5;
double r1190903 = /* ERROR: no posit support in C */;
double r1190904 = 2.0;
double r1190905 = /* ERROR: no posit support in C */;
double r1190906 = re;
double r1190907 = r1190906 * r1190906;
double r1190908 = /*Error: no posit support in C */;
double r1190909 = im;
double r1190910 = /*Error: no posit support in C */;
double r1190911 = /*Error: no posit support in C */;
double r1190912 = sqrt(r1190911);
double r1190913 = r1190912 - r1190906;
double r1190914 = r1190905 * r1190913;
double r1190915 = sqrt(r1190914);
double r1190916 = r1190903 * r1190915;
return r1190916;
}



Bits error versus re



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