首页 > 解决方案 > 这是 GFortran 10 中的错误吗?

问题描述

我可能在 GFortran 10 中发现了一个错误。

这是一个最小的例子:

program main

  complex(8) :: x(4)

  x = 1.d0

  call print_first_element( x(4:1:-1)*x(1:4) )

  contains

  subroutine print_first_element (array)

    complex(8), intent(in) :: array(:)

    print*, array(1)

  end

end

编译gfortran -O3 main.f90并执行它给出

(0.0000000000000000,0.0000000000000000)

虽然我会期待结果

(1.0000000000000000,0.0000000000000000)

奇怪的是,它可以与以下任何一项一起按预期工作:

  1. 将优化标志从 更改-O3-O2-O1-O0.

  2. 使用real(8)orinteger代替complex(8).

  3. 初始化为complex(8) :: x(4) = [1.d0,1.d0,1.d0,1.d0].

操作系统和GCC版本:

  1. 软呢帽 32.

  2. 的输出gfortran --versionGNU Fortran (GCC) 10.0.1 20200328

你同意这是一个错误吗?

标签: fortrangfortran

解决方案


推荐阅读