我有以下代码用于提取对称矩阵的独立项:
FUNCTION vecti(a)
USE ::comprob
IMPLICIT NONE
REAL, ALLOCATABLE :: a(:,:),vecti(:),v(:)
INTEGER :: m,c,i,j,r,b,s
LOGICAL :: comp
comp=symmat(a)
IF (comp) THEN
m=size(a,1)
s=(1/2)*m*(m+1)
ALLOCATE (v(s))
c=1
DO i=1,m,1
r=i-1
b=m-r
DO j=1,b,1
v(c)=a(i,j+r)
c=c+1
END DO
END DO
vecti=v
ELSE
print*,"Error VECTI: Non-symmetric matrix."
STOP
END IF
ENDFUNCTION
......但它不起作用。当我尝试打印结果向量数组时,它是“空”(未声明的数组的默认值)。我尝试了一切,最后我更改了以下内容:
s=(1/2)*m*(m+1)
这个:
s=(0.5)*m*(m+1)
它有效!但我想知道不再重复这个错误的原因。出了什么问题?