问题标签 [nag-fortran]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - 支持ieee_arithmetic的gfortran/ifort/nagfor/g95第一个版本是什么?
我想确定正在使用的 Fortran 编译器是否支持 ieee_arithmetic。我想这可以通过检查一些宏来完成,例如,在预处理中。为此,我想知道以下内容。
- 支持 ieee_arithmetic 的 gfortran / ifort / nagfor / g95(或其他常见的 Fortran 编译器)的第一个版本是什么?我在网上搜索并查看了手册,但没有找到答案。如果有人碰巧知道有关这些编译器之一的信息,那就太好了。
2. 不检查编译器的版本,有没有更好的方法来判断ieee_arithmetic是否可用?
非常感谢!
fortran - 空数组的边界检查——各种编译器的行为
更新20210914:Absoft 支持确认下面描述的af95
/的行为af90
是无意的,确实是一个错误。Absoft 开发人员将努力解决它。其他编译器在这方面表现正确。感谢@Vladimir F 的回答、评论和建议。
我的印象是,对于大小为 0 的数组,Fortran 很酷。但是,在 Absoft Pro 21.0 中,我遇到了一个涉及此类数组的(奇怪的)错误。相反,gfortran
、ifort
、nagfor
、pgfortran
、sunf95
和g95
都对同一段代码感到满意。
下面是一个最小的工作示例。
将这段代码命名为testempty.f90
. 然后运行
这就是我的机器上发生的事情(Ubuntu 20.04,linux 5.4.0-77-generic,x86_64):
所以af95
很恼火call bar(b)
。,af90
结果是一样的。
gfortran
我使用, ifort
, nagfor
, pgfortran
,sunf95
和测试了相同的代码g95
。尽管我明确实施了边界检查,但他们所有人都对代码感到非常满意。下面是Makefile
用于测试的。
问题:
af95
/的行为是否af90
符合标准?- 我的代码是否包含任何违反 Fortran 标准的内容?
- 一般来说,在 Fortran 代码中涉及空数组是否被认为是危险的?有时它们是不可避免的,因为数据大小在运行前通常是不可确定的。
“标准”是指 2003 年、2008 年和 2018 年。
非常感谢您的任何评论或批评。
(同样的问题也出现在Fortran Discourse上,我希望它不会违反这里的规则。)