The following program gives the wrong answers when the
MOD arguments have kind = 10 and one is an array. It
works when the kind is 4 or 8.
program FA2083
! fails on Windows XP
! gcc version 4.4.0 20080312 (experimental) [trunk revision 133139]
implicit none
integer j1,k
parameter (k=10) !fails
! parameter (k=8) !works
! parameter (k=4) !works
REAL(k) QDA1(10)
REAL(k) QDA(10), qval
print *, 'kind = ',k
qda = (/ 1,2,3,4,5,6,7,8,9,10 /)
QDA1 = MOD ( 1.1_k*( QDA(1) -5.0_k), P=( QDA -2.5_k))
DO J1 = 1,10
QVAL = MOD(1.1_k*(QDA(1)-5.0_k),P=(QDA(J1)-2.5_k))
print '(i3, 3f10.2)', j1, qda1(j1), qval, qval-qda1(j1)
ENDDO
END
c:\gfortran:gfortran fa2083.f
c:\gfortran:a
kind = 10
1 -1.40 -1.40 0.00
2 -0.40 -0.40 0.00
3 -0.40 -0.40 0.00
4 -0.40 -1.40 -1.00
5 -0.40 -1.90 -1.50
6 -0.40 -0.90 -0.50
7 -0.40 -4.40 -4.00
8 -0.40 -4.40 -4.00
9 -0.40 -4.40 -4.00
10 -0.40 -4.40 -4.00
c:\gfortran:gfortran fa2083.f
c:\gfortran:a
kind = 8
1 -1.40 -1.40 0.00
2 -0.40 -0.40 0.00
3 -0.40 -0.40 0.00
4 -1.40 -1.40 0.00
5 -1.90 -1.90 0.00
6 -0.90 -0.90 0.00
7 -4.40 -4.40 0.00
8 -4.40 -4.40 0.00
9 -4.40 -4.40 0.00
10 -4.40 -4.40 0.00
c:\gfortran:gfortran fa2083.f
c:\gfortran:a
kind = 4
1 -1.40 -1.40 0.00
2 -0.40 -0.40 0.00
3 -0.40 -0.40 0.00
4 -1.40 -1.40 0.00
5 -1.90 -1.90 0.00
6 -0.90 -0.90 0.00
7 -4.40 -4.40 0.00
8 -4.40 -4.40 0.00
9 -4.40 -4.40 0.00
10 -4.40 -4.40 0.00
--
Summary: wrong result for MOD with kind=10 for some array
argument values
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dick dot hendrickson at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35944