使用C语言一段时间后,我又回到了Fortran,并在我的代码中将数组从索引0分配到N:
real(kind=dp), dimension(:), allocatable :: a
allocate(a(0:50))
我需要找到数组中绝对值最小值的索引,因此我使用了MINLOC,并将其与MINVAL进行了比较以进行检查:
minloc(abs(a(:)))
minval(abs(a))
MINLOC的结果是索引42
,但MINVAL的结果对应于41
。以下是输出中相关部分:
Index i a(i)
39 0.04667
40 0.02222
41 0.00222 !This was clearly the minimum value
42 0.02667
MINLOC = 42
MINVAL = 0.00222
我猜测这与Fortran内置函数不能正确处理索引为0的数组有关,因为以这种方式声明数组不是标准的Fortran风格(但仍然被允许!)。是否有人能够确认这一点或提供解决方法?