Matrix 用fortran95实现两个方阵的乘积
我需要实现一个特定的算法,将2个方阵(在主程序中用随机数预生成)的乘积计算为模块内的子例程,如下所示:Matrix 用fortran95实现两个方阵的乘积,matrix,module,fortran,subroutine,fortran95,Matrix,Module,Fortran,Subroutine,Fortran95,我需要实现一个特定的算法,将2个方阵(在主程序中用随机数预生成)的乘积计算为模块内的子例程,如下所示: module MATMAT contains subroutine matmat_ijk ... end subroutine matmat_ijk end module MATMAT 这是我必须在上面的子例程中实现的算法,对两个矩阵A(mxr)和B(rxn)进行排序,以找到C(mxn): 该程序必须调用该子程序matmat_ijk,并使用主程序中生成的两个方阵(nx
module MATMAT
contains
subroutine matmat_ijk
...
end subroutine matmat_ijk
end module MATMAT
这是我必须在上面的子例程中实现的算法,对两个矩阵A(mxr)和B(rxn)进行排序,以找到C(mxn):
该程序必须调用该子程序matmat_ijk,并使用主程序中生成的两个方阵(nxn)进行计算。有什么想法吗?是的,我知道内在MATMUL,我也必须使用它,但我需要让这个算法工作,这样我就可以使用高分辨率时钟(在Silverfrost上)比较MATMAL的执行时间!谢谢:)@Guidis-试试看。这里有一些关键字可以帮助您解决“隐式无”、“大小”、“UBOUND”、“LBOUND”、“INTENT”。
proc matmat_ijk(real A[1:m,1:r],B[1:r,1:n];
ref real C[1:m,1:n])
1.int i,j,k
2.C:= 0.0
3.for i:=1 until m do
4.for j:=1 until n do
5.for k:=1 until r do
6.C[i,j]:= C[i,j]+A[i,k]*B[k,j]
7.end do
8.end do
9.end do
end proc