[Bug middle-end/79720] [5/6/7 Regression] complex division different at compile time / runtime
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Feb 26 22:31:00 GMT 2017
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)
More information about the Gcc-bugs
mailing list