https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79720
--- Comment #8 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Test case for double complex: $ cat re-d.c #include <complex.h> #include <stdio.h> #include <math.h> char input[] = "1.2e20 -3.2"; int main() { double complex c1, c2, r1, r2; double re, im; c1 = 1.2e20 - 3.2*I; sscanf(input,"%lf %lf", &re, &im); c2 = re + im*I; printf("c1 = (%a, %a)\nc2 = (%a, %a)\n", creal(c1), cimag(c1), creal(c2), cimag(c2)); printf("c1 - c2 = (%a, %a)\n", creal(c1)-creal(c2), cimag(c1)-cimag(c2)); r1 = 1/c1; r2 = 1/c2; printf("r1 = (%a, %a) r2 = (%a, %a)\n", creal(r1), cimag(r1), creal(r2), cimag(r2)); printf("r1 - r2 = (%a, %a)\n", creal(r1)-creal(r2), cimag(r1)-cimag(r2)); return 0; } $ gcc -O -Wall -Wextra re.c && ./a.out c1 = (0x1.a055690d9db8p+66, -0x1.999999999999ap+1) c2 = (0x1.a055690d9db8p+66, -0x1.999999999999ap+1) c1 - c2 = (0x0p+0, 0x0p+0) r1 = (0x1.3ad30dfcf371dp-67, 0x1.35bb89da10c03p-132) r2 = (0x1.3ad30dfcf371dp-67, 0x1.35bb89da10c04p-132) r1 - r2 = (0x0p+0, -0x1p-184)