为什么这个整数运算搞乱了整个函数?

时间:2017-05-14 16:17:00

标签: arrays function fortran declaration

我有以下代码用于提取对称矩阵的独立项:

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)

它有效!但我想知道不再重复这个错误的原因。出了什么问题?

0 个答案:

没有答案