Fortran Coder

标题: 16位精度问题 [打印本页]

作者: Shiev    时间: 2015-3-8 03:54
标题: 16位精度问题
我要做的是一个涡模拟的过程,每隔一个时间步长出现一个新的涡,此涡的涡量取决于前面出现的所有的涡,我要算1000个涡,所以前面任何一个涡量运算有偏差,积累一千步以后都会使最后的结论有很大误差。

所以我想要用十六位的有效运算精度,从网上查可以这样定义

Integer , parameter :: NP = SELECTED_REAL_KIND(16)
real(Kind = NP) :: U,a,dt


问题是,这样定义以后,我程序中的方程中的常数项,比如说是2,是要写成‘2d0’这样吗?还是像网上说的要写成‘2q’

我试过‘2d0’, 结果好像也不太对,‘2q'的话编译器根本不认

还有,平方项也需要写成’2d0‘这种形式吗?比如说’**2‘还是’**2d0‘

此外,我的变量U,a,dt是需要用户自己输入的,输入时直接敲进’1, 1, 0.1‘这样的数字,会不会影响精度

我用的是intel fortran 2013, windows7 系统 64位,谢谢各位大大能够指点


作者: li913    时间: 2015-3-8 09:04
本帖最后由 li913 于 2015-3-8 09:07 编辑

2.0q0  或者  2.0_16 或者 2.0_NP

QQ截图20150308090545.jpg (62.41 KB, 下载次数: 287)

QQ截图20150308090545.jpg

作者: vvt    时间: 2015-3-8 10:54
推荐用 2.0_NP 来写常量。

用户输入的 1.0 不需要有后缀,转换时只要变量是16位精度的,一般都不会丢。
作者: Shiev    时间: 2015-3-8 17:25
谢谢啦!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2