Yes, that is exactly my point. No difference at all.
It is all in correct addressing of the memory locations
(i.e. the index "L" in your example).

--- On Fri, 9/18/09, Hickey Rob (ED/ETS4-Wm) <[email protected]> wrote:

> From: Hickey Rob (ED/ETS4-Wm) <[email protected]>
> Subject: Column Major
> To: [email protected]
> Date: Friday, September 18, 2009, 12:07 PM
> 
> 
> 
>  
>  
> Column Major
> 
>  
> 
> 
>      CALL COLUMN_MAJOR_TEST()
> 
> 
>      END
> 
> 
> !
> **********************************************************************
> 
> 
>       SUBROUTINE COLUMN_MAJOR_TEST()
> 
> 
> !
> **********************************************************************     
> 
> 
> 
> !
> DEMONSTRATE COLUMN MAJOR
> 
> 
> !
> ----------------------------------------------------------------------
> 
> 
>       IMPLICIT NONE
> 
> 
>       INTEGER I, J, K, L   
> 
> 
>       INTEGER, PARAMETER :: NI = 2, NJ = 3, NK =
> 4
> 
> 
>       INTEGER, DIMENSION(NI,NJ,NK) :: MAT
> 
> 
>       INTEGER, DIMENSION(NI*NJ*NK) :: VEC
> 
> 
>       
> 
> 
>        DO I = 1,NI
> 
> 
>          DO J =
> 1,NJ
> 
> 
>           
> DO K =
> 1,NK
> 
> 
>              MAT(I,J,K) =
> 100*I + 10*J +
> K           
> 
> 
> 
>           
> ENDDO
> 
> 
>          ENDDO
> 
> 
>        ENDDO 
> 
> 
>        
> 
> 
>       VEC(:) = RESHAPE (MAT, (/NI*NJ*NK/)) 
> 
> 
>       
> 
> 
>        DO I = 1,NI
> 
> 
>          DO J =
> 1,NJ
> 
> 
>           
> DO K =
> 1,NK 
> 
> 
>               L = I
> + NI*((J-1) + NJ*((K-1) + NK*(0)))   !
> ...etc       
> 
> 
>              
> WRITE(*,'(8(1X,I4))') I,J,K,L, MAT(I,J,K),
> VEC(L)
> 
> 
>           
> ENDDO
> 
> 
>          ENDDO
> 
> 
>        ENDDO 
> 
> 
>       
> 
> 
>       END SUBROUTINE COLUMN_MAJOR_TEST
> 
> 
>  
> 



Reply via email to