fortran66のブログ

fortran について書きます。

単位行列を一行で生成


ついでに動的にフォーマット生成もする。
INTRINSIC :: RESHAPE
が入ったのは、ファイル名を RESHAPE.F90 にしたため object 名がかぶってしまい必要になりました。本来的には不要。

出力結果

ソースコード

PROGRAM test
INTEGER, ALLOCATABLE :: m(:, :)
INTEGER :: i, j, n
INTRINSIC :: RESHAPE
CHARACTER(LEN = 10) :: fmt = ''


PRINT *, 'Input Matrix size'
READ  *, n

ALLOCATE( m(n, n) )
m = RESHAPE( [(1,  (0, i = 1, n), j = 1, n - 1),  1],  [n, n] )

WRITE(fmt, '(a, i2, a)') '(', n, 'i4)'
PRINT fmt, m

STOP
END PROGRAM test