我有几百行程序(包括函数)基本上是自由形式的Fortran。有一次,我有一对嵌套的do循环,它们调用函数并将结果存储在矩阵中。但是,我不相信任何问题(虽然我可能是错的)。
在第一个do循环开始后,我立即使用另一个数组的列定义一个数组。紧接着,指数总是设置为3.我还没有在通常的地方找到任何有用的信息。我已经在下面提供了一段代码。
do i = 1,n
print *, 'i:',i ! Gives i = 1
applyto = eig_vec(:,i)
print *, i ! Gives i = 3
state1 = create_state(ground,applyto,state,bin_state,num_s,ns)
first = destroy_state(ground,state1,state,bin_state,num_s,ns)
state1 = destroy_state(ground,applyto,state,bin_state,num_s,ns)
second = create_state(ground,state1,state,bin_state,num_s,
1 ns)
do j = 1,n
bra = eig_vec(:,j)
a_matrix(j,i) = sum(bra*first + bra*second)
matrix(j,i) = sum(bra*first - bra*second
end do
end do
这是一个错误吗?我错过了一些明显的东西吗我正在使用高级优化编译代码,如果这可能是问题的根源。我对Fortran来说相对较新,所以调试标志或命令(对于gdb - 我相信我所拥有的全部内容)都是受欢迎的。