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)
下载附件
2015-3-8 09:04 上传
作者:
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