[Fortran] 纯文本查看 复制代码
Module MatMulMod
Implicit None
contains
Function mat_mul(a, b) result( c )
Real a(:,:) , b(:,:)
Real c( size(a,dim=1) , size(b,dim=2) )
Integer i, j, k
c = 0.0
Do i = 1, size(a,dim=1)
Do j = 1, size(b,dim=2)
Do k = 1, size(a,dim=2)
c(i, j) = c(i, j) + a(i, k) * b(k, j)
End Do
End Do
End Do
End Function mat_mul
Subroutine output(a)
Real a(:,:)
Integer i , n
Character (Len=100) :: for = '(??(1X, es13.6))'
n = size( a , dim = 1 )
Write (for(2:3), '(i2.2)') n
!Open (21, Status='unknown', File='c.dat') ! your result is here
Do i = 1, n
Write (*, for) a(i,:)
!Write (21, for ) a(i,:)
End Do
!Close( 21 )
End Subroutine output
End Module MatMulMod
Program matrix
use MatMulMod
Implicit None
Integer n
Parameter (n=2) ! remember setup dimension first!!!
Real :: a(n, n), b(n, n), c(n, n)
a = reshape([1,2,3,4],[2,2]) ; b=reshape([2,3,4,5],[2,2])
!Open (11, Status='unknown', File='a.DAT')
!Read (11, *) c
!Open (12, Status='unknown', File='b.DAT')
!Read (12, *) b
c = mat_mul(a, b)
Write (*, *) 'Your new matrix looks like: '
Call output(c)
c = matmul(a,b)
Call output(c)
End Program matrix