我正在尝试编写矢量化的FORTRAN子程序,并将其合并到Abaqus有限元求解器中.一些学习材料定义了在公式中用作代码开头的参数的常数,例如: parameter ( zero = 0.d0, one = 1.d0, two = 2.d0, third = 1
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都是完全可呈现的,但是例如三分之一不是.