[Bug fortran/57785] New: DOT_PRODUCT error with constant complex array
konstant at mail dot ntua.gr
gcc-bugzilla@gcc.gnu.org
Tue Jul 2 17:57:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57785
Bug ID: 57785
Summary: DOT_PRODUCT error with constant complex array
Product: gcc
Version: 4.7.3
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: konstant at mail dot ntua.gr
GNU Fortran (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
Code:
print *, 'z.z= ',DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0),
(1.0, 4.0) /))
print *, 'z.z= ',SUM( CONJG((/ (1.0, 2.0), (2.0, 3.0) /))*(/ (1.0, 1.0),
(1.0, 4.0) /))
produces
z.z= ( -11.0000000 , 14.0000000 )
z.z= ( 17.0000000 , 4.00000000 )
The first one is wrong.
With GNU Fortran (Ubuntu 4.4.3-4ubuntu5) 4.4.3 the result is correct:
z.z= ( 17.000000 , 4.0000000 )
z.z= ( 17.000000 , 4.0000000 )
Generating complex numbers e.g.
complex(8) :: z1(2),z2(2)
real (8) :: rez(2),imz(2)
call random_number(rez);call random_number(imz);z1=DCMPLX(rez,imz)
call random_number(rez);call random_number(imz);z2=DCMPLX(rez,imz)
print *, 'z1.z2=',DOT_PRODUCT(z1,z2)
print *, 'z1.z2=',SUM(DCONJG(z1)*z2)
produces correct results for many tries.
More information about the Gcc-bugs
mailing list