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)

Reply via email to