| [1727] | 1 | PROGRAM MAIN | 
|---|
|  | 2 | IMPLICIT NONE | 
|---|
|  | 3 |  | 
|---|
|  | 4 | ! declaration d'interface de fonction | 
|---|
|  | 5 | interface | 
|---|
| [1728] | 6 | subroutine check_table(k, a, b, c, ntot) | 
|---|
| [1727] | 7 | integer, intent (in) :: k | 
|---|
| [1728] | 8 | integer, intent (inout) :: ntot | 
|---|
| [1727] | 9 | double precision, intent (in), dimension(:,:) :: a,b,c | 
|---|
|  | 10 | end subroutine check_table | 
|---|
|  | 11 | end interface | 
|---|
|  | 12 |  | 
|---|
| [1728] | 13 | integer, parameter :: NL = 4, NC=5 | 
|---|
| [1727] | 14 | double precision, dimension (NL, NC) :: m1,m2,m3,m4 | 
|---|
|  | 15 |  | 
|---|
| [1728] | 16 | integer :: i,j,k,kk | 
|---|
|  | 17 | integer :: ntot,nloop | 
|---|
|  | 18 |  | 
|---|
| [1727] | 19 | integer :: N = 5000000 | 
|---|
|  | 20 |  | 
|---|
|  | 21 | print *, '--- timing test : N=', N, ' NL=', NL, ' NC=',NC | 
|---|
| [1728] | 22 | ntot = 0 | 
|---|
|  | 23 | nloop = 0 | 
|---|
|  | 24 | do kk=1,1 | 
|---|
| [1727] | 25 | do k=1,N | 
|---|
|  | 26 | m1 = 0 | 
|---|
|  | 27 | m2 = 0 | 
|---|
|  | 28 | do i=1,NL | 
|---|
|  | 29 | do j=1,NC | 
|---|
|  | 30 | m1(i,j) = k*300+10.*i+j | 
|---|
|  | 31 | m2(i,j) = k*550+20.*i+2.*j; | 
|---|
|  | 32 | enddo | 
|---|
|  | 33 | enddo | 
|---|
|  | 34 | m3 = m1+m2; | 
|---|
|  | 35 | m4 = m1*m2; | 
|---|
| [1728] | 36 | call check_table(k, m2, m3, m4, ntot) | 
|---|
| [1727] | 37 | !        if (k .eq. 1) then | 
|---|
|  | 38 | !           print *, 'm1=', m1 | 
|---|
|  | 39 | !           print *, 'm2=', m2 | 
|---|
|  | 40 | !           print *, 'm3=', m3 | 
|---|
|  | 41 | !           print *, 'm4=', m4 | 
|---|
|  | 42 | !        endif | 
|---|
| [1728] | 43 | nloop = nloop+1 | 
|---|
| [1727] | 44 | enddo | 
|---|
| [1728] | 45 | enddo | 
|---|
|  | 46 |  | 
|---|
|  | 47 | print *, ' nloop = ', nloop , ' ntot = ' , ntot | 
|---|
|  | 48 | print *, '------- end of matrixf.f90 -------- ' | 
|---|
| [1727] | 49 | end | 
|---|
|  | 50 |  | 
|---|
|  | 51 |  | 
|---|
| [1728] | 52 | subroutine check_table(k, a, b, c, ntot) | 
|---|
| [1727] | 53 | integer, intent (in) :: k | 
|---|
|  | 54 | double precision, intent (in), dimension(:,:) :: a,b,c | 
|---|
|  | 55 |  | 
|---|
|  | 56 | if ((k.eq.1) .or. (k.eq.50))  then | 
|---|
|  | 57 | print *, 'check_table(',k, '...) size(a,1)= ', size(a,1), & | 
|---|
|  | 58 | ' size(a,2)= ', size(a,2) | 
|---|
|  | 59 | endif | 
|---|
| [1728] | 60 | ntot = ntot+1 | 
|---|
| [1727] | 61 | end subroutine check_table | 
|---|
|  | 62 |  | 
|---|