问题标签 [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.

0 投票
0 回答
141 浏览

fortran - 支持ieee_arithmetic的gfortran/ifort/nagfor/g95第一个版本是什么?

我想确定正在使用的 Fortran 编译器是否支持 ieee_arithmetic。我想这可以通过检查一些宏来完成,例如,在预处理中。为此,我想知道以下内容。

  1. 支持 ieee_arithmetic 的 gfortran / ifort / nagfor / g95(或其他常见的 Fortran 编译器)的第一个版本是什么?我在网上搜索并查看了手册,但没有找到答案。如果有人碰巧知道有关这些编译器之一的信息,那就太好了。

2. 不检查编译器的版本,有没有更好的方法来判断ieee_arithmetic是否可用?

非常感谢!

0 投票
1 回答
67 浏览

fortran - 空数组的边界检查——各种编译器的行为

更新20210914:Absoft 支持确认下面描述的af95/的行为af90是无意的,确实是一个错误。Absoft 开发人员将努力解决它。其他编译器在这方面表现正确。感谢@Vladimir F 的回答、评论和建议。


我的印象是,对于大小为 0 的数组,Fortran 很酷。但是,在 Absoft Pro 21.0 中,我遇到了一个涉及此类数组的(奇怪的)错误。相反,gfortranifortnagforpgfortransunf95g95都对同一段代码感到满意。

下面是一个最小的工作示例。

将这段代码命名为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用于测试的。

问题:

  1. af95/的行为是否af90符合标准?
  2. 我的代码是否包含任何违反 Fortran 标准的内容?
  3. 一般来说,在 Fortran 代码中涉及空数组是否被认为是危险的?有时它们是不可避免的,因为数据大小在运行前通常是不可确定的。

“标准”是指 2003 年、2008 年和 2018 年。

非常感谢您的任何评论或批评。

(同样的问题也出现在Fortran Discourse上,我希望它不会违反这里的规则。)