https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98201
--- Comment #5 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- What is the output of #include <complex.h> #include <stdio.h> int main() { _Complex float z, sq, sq2; int n; float a; a = -1.; for (n = 1; n < 10; n++) { a = a * 10; z = a + _Complex_I * 1.0; sq = csqrtf (z); sq2 = sq * sq; printf ("(%e,%e) (%e,%e) (%e,%e)\n", creal(z), cimag(z), creal(sq), cimag(sq), creal(sq2), cimag(sq2)); } return 0; } ? On my Linux box, it is (-1.000000e+01,1.000000e+00) (1.579171e-01,3.166218e+00) (-1.000000e+01,1.000000e+00) (-1.000000e+02,1.000000e+00) (4.999937e-02,1.000012e+01) (-1.000000e+02,1.000000e+00) (-1.000000e+03,1.000000e+00) (1.581139e-02,3.162278e+01) (-9.999999e+02,1.000000e+00) (-1.000000e+04,1.000000e+00) (5.000000e-03,1.000000e+02) (-1.000000e+04,1.000000e+00) (-1.000000e+05,1.000000e+00) (1.581139e-03,3.162278e+02) (-9.999999e+04,1.000000e+00) (-1.000000e+06,1.000000e+00) (5.000000e-04,1.000000e+03) (-1.000000e+06,1.000000e+00) (-1.000000e+07,1.000000e+00) (1.581139e-04,3.162278e+03) (-1.000000e+07,1.000000e+00) (-1.000000e+08,1.000000e+00) (5.000000e-05,1.000000e+04) (-1.000000e+08,1.000000e+00) (-1.000000e+09,1.000000e+00) (1.581139e-05,3.162278e+04) (-1.000000e+09,9.999999e-01)