1 4
2 1
という行列の転置行列を求めるプログラムを書きました。関数を用いて実行すると正しく動作しません。なぜですか。教えてください。実行結果以下です。
2.0000000000000000 4.0000000000000000 2.1240734990595666E-314
3.0000000000000000 2.0000000000000000 2.1240734990595666E-314
program main
implicit none
double precision a(3,2),b(2,3),t(3,3)
integer i,j
a(1,1)=2
a(1,2)=3
a(2,1)=1
a(2,2)=4
a(3,1)=2
a(3,2)=1
call tentigyouretu(a,3,2,t)!m*m行列の転置行列を求める。
do i=1,2
write(*,*)t(i,1),t(i,2),t(i,3)
enddo
end program
subroutine tentigyouretu(a,n,m,ans)!m*m行列の転置行列を求める。
implicit none
double precision a(n,m),ans(m,n)
integer i,j,n,m
do i=1,m
do j=1,n
ans(i,j)=a(j,i)
enddo
enddo
end subroutine