real a(20)´Â ±æÀÌ°¡ 20ÀÎ ½Ç¼ö ¹è¿a¸¦ ¼±¾ðÇÑ´Ù. Áï a´Â memory¿¡ ¿¬¼ÓÀûÀ¸·Î ÀúÁ¤µÇ¾î ÀÖ´Â 20 °³ÀÇ ½Ç¼ö¸¦ ÀǹÌÇÑ´Ù. ±ÔÁ¤¿¡ ÀÇÇÏ¿© Fortran ¹è¿Àº 1ºÎÅÍ ¹øÈ£ ¸Å°ÜÁø´Ù. µû¶ó¼ ¹è¿ÀÇ Ã¹¹ø° ¼ýÀÚ´Â a(1)ÀÌ°í ¸¶Áö¸·Àº a(20)ÀÌ´Ù. ±×·¯³ª ´ÙÀ½°ú °°ÀÌ ÇÏ¸é ¼ø¼ÀÇ ¹üÀ§¸¦ ¸¶À½´ë·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
real b(0:19), weird(-162:237)¿©±â¼ b´Â ¼ø¼°¡ 0ºÎÅÍ 19±îÁöÀÎ °ÍÀ» Á¦¿ÜÇÏ°í´Â ¾ÕÀÇ ¿¹ÀÇ a¿Í ¶È °°´Ù. weird´Â ±æÀÌ°¡ 237-(-162)+1 = 400ÀÎ ¹è¿ÀÌ´Ù.
¹è¿ÀÇ ¿ø¼ÒÀÇ ÇüÅ´ ´Ù¸¥ ±âº»ÀûÀÎ dataÀÇ Çü½Ä ÁßÀÇ ÇϳªÀÌ´Ù. ¿¹:
integer i(10) logical aa(0:1) double precision x(100)
ÇÑ ¹è¿ÀÇ ´Ù¸¥ ¿ø¼Ò´Â °¢°¢ µ¶¸³ÀûÀÎ º¯¼ö·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ¹è¿ aÀÇ i¹ø° ¿ø¼Ò´Â a(i)·Î ³ªÅ¸³½´Ù. ´ÙÀ½Àº ¹è¿ sq¿¡ 10 °³ÀÇ ¼ýÀÚÀÇ Á¦°öÀ» ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
integer i, sq(10) do 100 i = 1, 10 sq(i) = i**2 100 continue
Fortran¿¡¼ ÈçÈ÷ ¹üÇÏ´Â À߸øÀº ¹üÀ§ ¹ÛÀ̰ųª Á¤ÀÇÇÏÁö ¾ÊÀº ¹è¿ÀÇ ¿ø¼Ò¸¦ °¡¸®Å°´Â ÀÏÀÌ´Ù. ÀÌ´Â ÇÁ·Î±×·¡¸Ó°¡ ¾Ë¾Æ¼ ÇÒ ÀÏÀ̸ç Fortran compiler ´Â ÀÌ·± À߸øÀ» ¾Ë ¼ö ¾ø´Ù!
real A(3,5)Àº 3*5=15 °³ÀÇ ½Ç¼ö¸¦ °¡¸®Å°´Â ÀÌÂ÷¿ø ¹è¿À» Á¤ÀÇÇÑ´Ù. óÀ½ ¼ýÀÚ´Â ¿(row)¸¦ °¡¸®Å°´Â ¼ýÀÚ·Î µÎ¹ø°´Â Çà(column)À» °¡¸®Å°´Â ¼ýÀÚ·Î »ý°¢ÇÑ´Ù. À̸¦ ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù.
(1,1) (1,2) (1,3) (1,4) (1,5) (2,1) (2,2) (2,3) (2,4) (2,5) (3,1) (3,2) (3,3) (3,4) (3,5)ÀÌÂ÷¿ø ¹è¿µµ ±× ¹üÀ§¸¦ ÀÓÀÇ·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀû syntax´Â ´ÙÀ½°ú °°´Ù.
name (low_index1 : hi_index1, low_index2 : hi_index2)¹è¿ÀÇ Àüü Å©±â´Â ´ÙÀ½°ú °°´Ù.
size = (hi_index1-low_index1+1)*(hi_index2-low_index2+1)
Fortran¿¡¼´Â ÀúÀåÇÏ°íÀÚÇÏ´Â matrixº¸´Ù Å« ¹è¿À» ¼±¾ðÇÏ´Â °ÍÀÌ º¸ÅëÀÌ´Ù. (ÀÌ´Â Fortran¿¡¼´Â dynamic storage allocationÀ» ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.) ´ÙÀ½Àº À߸øµÇÁö ¾ÊÀº °ÍÀÌ´Ù. ¿¹:
real A(3,5) integer i,j c c We will only use the upper 3 by 3 part of this array. c do 20 j = 1, 3 do 10 i = 1, 3 a(i,j) = real(i)/real(j) 10 continue 20 continueºÎ¹è¿ A(1:3,4:5)ÀÇ ¿ø¼Ò °ªÀº Á¤ÀǵÇÁö ¾Ê¾Ò´Ù. compiler°¡ ÀÌ ¿ø¼ÒÀÇ ÃʱⰪÀ» 0À¸·Î ¼³Á¤ÇÒ °ÍÀ̶ó°í °¡Á¤ÇÏÁö ¸»¶ó. (¾î¶² compiler¿¡¼´Â 0À¸·Î ¼³Á¤ÇÏÁö¸¸ ÇÏÁö¸¸ ¸ðµç compiler°¡ ±×·¸Áö ¾Ê´Ù.).
3 by 5ÀÇ ¹è¿ A(3,5)ÀÇ À§ÂÊ 3 by 3 ºÎ¹è¿¸¸ »ç¿ëÇÏ´Â ¿¹¸¦ ´Ù½Ã »ìÆ캸¸é °ü½ÉÀÌ ÀÖ´Â 9 °³ÀÇ elements´Â óÀ½ 9 °³ÀÇ memory¿¡ ÀúÀåµÇ°í ³ª¸ÓÁö 6°³´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù. leading dimensionÀº ¹è¿¿¡¼³ª ¹è¿¿¡ ÀúÀåÇÑ matrix¿¡¼³ª ¶È °°´Ù. ±×·¯³ª Á¾Á¾ ¹è¿ÀÇ leading dimensionÀÌ matrixÀÇ Ã¹¹ø° Â÷¿øº¸ÀÚ Å¬ ¼ö ÀÖ´Ù. ±× °æ¿ì¿¡´Â ¹è¿Àº ¿¬¼ÓÀûÀ̶ó ÇÏ´õ¶óµµ matrix´Â memory¿¡ ¿¬¼ÓÀûÀ¸·Î ÀúÀåµÇÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î A(5,3)À̶ó°í ¼±¾ðÇÏ¿´´Ù¸é ÇÑ ÇàÀÇ ³¡°ú ´ÙÀ½ ÇàÀÇ ½ÃÀÛ »çÀÌ¿¡ "»ç¿ëÇÏÁö ¾Ê´Â" memory°¡ µÎ °³ ÀÖ°Ô µÈ´Ù. (matrix´Â 3 by 3À̶ó°í °¡Á¤).
ÀÌ·± »ç½ÇÀº º¹ÀâÇÑ °Í °°Áö¸¸ Àͼ÷ÇÏ¿©Áö¸é ´ë´ÜÈ÷ ´Ü¼øÇÏ´Ù. Àǽɽº·¯¿ì¸é ¹è¿ ¿ø¼ÒÀÇ ÁÖ¼Òaddress¸¦ »ìÆ캸¸é ÁÁ´Ù. °¢°¢ÀÇ ¹è¿Àº ¹è¿ÀÇ Ã¹¹ø° Áï ¿ø¼Ò (1,1)°¡ ¾î¶² memory ÁÖ¼Ò¿¡ ¹èÁ¤µÇ¾î ÀÖ´Ù. element (i,j)ÀÇ ÁÖ¼Ò´Â then given by
addr[A(i,j)] = addr[A(1,1)] + (j-1)*lda + (i-1)¿©±â¼ lda´Â AÀÇ leading (i.e. column) dimensionÀÌ´Ù. º¸Åë ldaÀº ½ÇÁ¦ matrix Â÷¿ø°ú´Â ´Ù¸£´Ù´Â Á¡¿¡ ÁÖÀÇÇÑ´Ù. ÀÌ·± ·ùÀÇ FortranÀÇ ¿À·ù°¡ ´ë´ÜÈ÷ ¸¹À¸¸ç µû¶ó¼ ÀÌ Â÷À̸¦ ÀÌÇØÇÏ¿©¾ß ÇÑ´Ù!
real A, x dimension x(50) dimension A(10,20)˼
real A(10,20), x(50)°ú °°´Ù. ¿À´Ã³¯¿¡´Â ÀÌ dimension ¹®Àº ±¸½ÄÀÌ´Ù.
integer nmax parameter (nmax=40) real A(nmax, nmax)¾Ë¸Â´Â vector x¿Í y¸¦ Á¤ÀÇÇÏ°í 1<=i<=m , 1<=j<=nÀÇ ¹üÀ§¿¡¼ (´Ü m=10, n=20) A(i,j) = i+j-2·Î ÃʱâÈÇ϶ó. ¶Ç 1<=j<=n¿¡¼ x(j) = 1·Î ÃʱâÈÇ϶ó. º»¹®¿¡ ÁÖ¾îÁø matvec subroutineÀ» »ç¿ëÇÏ¿© y=A*x¸¦ °è»êÇ϶ó. °á°ú y¸¦ ÀμâÇ϶ó.