【发布时间】:2016-11-19 19:41:33
【问题描述】:
2013 年有一个关于将大工作代码从双精度转换为四精度的问题:“Converting a working code from double-precision to quadruple-precision: How to read quadruple-precision numbers in FORTRAN from an input file”,共识是使用指定“工作精度”的可调参数“WP”来声明变量,而不是使用 D+01 声明变量的程序的单独版本,以及使用 Q+01 声明的另一个版本。这样我们就可以通过在顶部定义 WP=real128 或 WP=real64 轻松地来回切换,其余的不需要改变。
但是我们该怎么做呢?
我通过编写一个简单的代码 TEST.F90 尝试了该问题的答案中的建议:
PROGRAM TEST
use ISO_FORTRAN_ENV
WP= real128
IMPLICIT NONE
real (WP) :: X
X= 5.4857990945E-4_WP
END PROGRAM TEST
编译:
~/gcc-4.6/bin/gfortran -o tst.x TEST.F90
但它给出了:
IMPLICIT NONE
1
Error: Unexpected IMPLICIT NONE statement at (1)
QLEVEL16.F90:5.12:
real (WP) :: MEL
1
Error: Parameter 'wp' at (1) has not been declared or is a variable, which does not reduce to a constant expression
QLEVEL16.F90:6.29:
MEL= 5.4857990945E-4_WP
1
Error: Missing kind-parameter at (1)
【问题讨论】:
标签: gcc fortran precision gfortran arbitrary-precision