fortran - 这是 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)
奇怪的是,它可以与以下任何一项一起按预期工作:
将优化标志从 更改
-O3
为-O2
、-O1
或-O0
.使用
real(8)
orinteger
代替complex(8)
.初始化为
complex(8) :: x(4) = [1.d0,1.d0,1.d0,1.d0]
.
操作系统和GCC版本:
软呢帽 32.
的输出
gfortran --version
是GNU Fortran (GCC) 10.0.1 20200328
。
你同意这是一个错误吗?
解决方案
推荐阅读
- python - 使用 sqlmodel 的 alembic 迁移尝试更改主键列
- jquery - 如何使用分页制作 AJAX 过滤器
- reactjs - 在 onChange 中的 formik 中重置表单
- hosting - 托管网站问题?未找到 在此服务器上未找到请求的 URL?
- javascript - Next.js 错误:无法读取未定义的属性(正在读取“集合”)
- java - 当条件为假时,Do-While 循环不会终止
- laravel - 查询获得当天销售额最多的 3 个用户
- azure - 如何删除通过门户 UI 上传到 azure 函数的文件?
- javascript - 是什么导致了这个“非法 base64 数据”错误?
- steam-web-api - Steam API 无法更改语言