回 帖 发 新 帖 刷新版面

主题:[讨论]fortran内部函数minval似乎有bug

最近用maxval,minval函数求数组的最大最小值,发现有的时候minval得到的值总出错。
    不晓得是不是有bug,特来请教大家。
比如,在module share_data中声明一个可变大小的数组:
  module share_data
  implicit none
  real, save, dimension(:,:,:), allocatable :: x, y, z
  end module share_data
然后利用子程序read_data读取网格数据:
  subroutine read_data()
  use share_data
  implicit none
  ...
  对x,y,z数组指定大小并读取数据
  ...
  end subroutine read_data
然后在进行数据处理的时候,将数组x的最小值赋给xmin (real型):
  xmin= minval(x)
得到的xmin并不对,但是如果用循环的办法却可以得到正确的:
  do k= 1, Kmax
    do j= 1, Jmax
      do i= 1, Imax
        xmin= min(xmin, x(i,j,k))
      end do
    end do
  end do
到底是为啥嗫?请大家不吝赐教,谢谢。

回复列表 (共2个回复)

沙发

Fortran语法是不可能有bug的,因为语法是规定出来的。

有bug的永远是软件,编译器。

我觉得你应该告诉我们你用的什么编译器,最好把算例附上

板凳

CVF和IVF都遇到过这个问题,好纠结

我来回复

您尚未登录,请登录后再回复。点此登录或注册