主题:有个重载的问题,很诡异~
real:: a1(1,3)=(/1,2,3/)
real:: a2(3,3)=0
matmul(a2,a1)
........
这样编译出错,是必然的嘛 The shapes of the arguments are inconsistent or nonconformable
然后我把 matmul 放在模块函数里:
FUNCTION mtplm_m(mat1,mat2)
real,intent(in),dimension(:,:):: mat1,mat2
real,allocatable,dimension(:,:):: mtplm_m
integer:: trow1,tcol2
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
trow1=ubound(mat1,1)
tcol2=ubound(mat2,2)
allocate(mtplm_m(trow1,tcol2))
mtplm_m = matmul(mat1,mat2)
ENDFUNCTION mtplm_m
然后运行: mtplm_m(a2,a1)
竟然可以运行!乘出来是3×3矩阵,这个就不能理解了,一样的matmul内置函数为什么会出现这两种情况?
real:: a2(3,3)=0
matmul(a2,a1)
........
这样编译出错,是必然的嘛 The shapes of the arguments are inconsistent or nonconformable
然后我把 matmul 放在模块函数里:
FUNCTION mtplm_m(mat1,mat2)
real,intent(in),dimension(:,:):: mat1,mat2
real,allocatable,dimension(:,:):: mtplm_m
integer:: trow1,tcol2
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
trow1=ubound(mat1,1)
tcol2=ubound(mat2,2)
allocate(mtplm_m(trow1,tcol2))
mtplm_m = matmul(mat1,mat2)
ENDFUNCTION mtplm_m
然后运行: mtplm_m(a2,a1)
竟然可以运行!乘出来是3×3矩阵,这个就不能理解了,一样的matmul内置函数为什么会出现这两种情况?