【发布时间】:2015-06-17 11:22:36
【问题描述】:
在使用 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 样式(但仍然允许!)。
谁能证实这一点或提供解决方法?
【问题讨论】:
标签: c arrays fortran min intrinsics