当前位置 : 主页 > 网络安全 > 测试自动化 >

将数字定义为FORTRAN中的参数是否具有性能优势

来源:互联网 收集:自由互联 发布时间:2021-06-22
我正在尝试编写矢量化的FORTRAN子程序,并将其合并到Abaqus有限元求解器中.一些学习材料定义了在公式中用作代码开头的参数的常数,例如: parameter ( zero = 0.d0, one = 1.d0, two = 2.d0, third = 1
我正在尝试编写矢量化的FORTRAN子程序,并将其合并到Abaqus有限元求解器中.一些学习材料定义了在公式中用作代码开头的参数的常数,例如:

parameter ( zero = 0.d0, one = 1.d0, two = 2.d0, third = 1.d0 / 3.d0, half = 0.5d0, op5 = 1.5d0)

所以不是写0.5 * a而是写半个* a.这有性能优势吗?

编辑:我深入挖掘并在this file的第11页(幻灯片A3.22)中找到了这个:

The PARAMETER assignments yield accurate floating point constant
definitions on any platform.

不,没有任何性能差异.生成的代码将完全相同.它可能只是用于使这些数字更方便或(据说)可读.

但你一定要小心.只有0.5是(默认)单精度数.您必须使用常量定义中使用的方式. 0.5d0是双精度,常数将帮助您不要忘记d0.在二进制数字格式中,无论如何0.5都是完全可呈现的,但是例如三分之一不是.

网友评论