SPREAD |
書式 | SPREAD(SOURCE,DIM,NCOPIES) | ||||||
機能 |
配列を複製して次元を付け加える。指定した次元DIMについてSOURCEを
NCOPIES個分複写し、1次元だけ大きい配列を形成する。 SOURCEがスカラであるとき、結果の各要素はSOURCEに等しい値とする。 SOURCEが配列であるとき、 (r1,r2,…,rn+1)である。 結果の要素はSOURCE(r1,r2,…, rDIM-1,rDIM+1,…,rn+1)に等しい値とする。 nはSOURCEの次元数とする。 | ||||||
引数 |
| ||||||
戻り値 |
型、種別型パラメタはSOURCEと同じで、形状はn+1次元配列である。 SOURCEがスカラであるとき、結果の形状は(max(NCOPIES,0))とする。 SOURCEの値が形状(d1,d2,…,dn)である結果の形 状はSOURCE(d1,d2,…,dDIM-1,max(NCOPIES,0), dDIM,…,dn)とする。 |
┌───┬───┬───┬───┐ a│ 1 │ 2 │ 3 │ 4 │ └───┴───┴───┴───┘ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ b│ 1 │ 2 │ 3 │ 4 │ c│ 1 │ 1 │ 1 │ │ 1 │ 2 │ 3 │ 4 │ │ 2 │ 2 │ 2 │ │ 1 │ 2 │ 3 │ 4 │ │ 3 │ 3 │ 3 │ └───┴───┴───┴───┘ │ 4 │ 4 │ 4 │ └───┴───┴───┘ INTEGER :: i INTEGER,DIMENSION(4) :: a INTEGER,DIMENSION(3,4) :: b INTEGER,DIMENSION(4,3) :: c a=(/1,2,3,4/) b=SPREAD(a,1,3) WRITE(*,'(4I2)') (b(i,:),i=1,3) WRITE(*,*) '--------' c=SPREAD(a,2,3) WRITE(*,'(3I2)') (c(i,:),i=1,4)
実行例 |