use*_*772 1 precision gcc fortran gfortran arbitrary-precision
在2013年,有一个问题是将大工作代码从双精度转换为四倍精度:" 将工作代码从双精度转换为四倍精度:如何从输入文件读取FORTRAN中的四倍精度数字 ",以及共识是使用可调参数"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
Run Code Online (Sandbox Code Playgroud)
编译:
~/gcc-4.6/bin/gfortran -o tst.x TEST.F90
Run Code Online (Sandbox Code Playgroud)
但它给出了:
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)
Run Code Online (Sandbox Code Playgroud)
类型说明符必须是整数参数 - 并且您没有适当地声明它.此外,implicit none必须在任何声明之前.
这是一个解决这两个问题的工作版本:
PROGRAM TEST
use ISO_FORTRAN_ENV
IMPLICIT NONE
integer, parameter :: WP= real128
real (WP) :: X
X= 5.4857990945E-4_WP
END PROGRAM TEST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |