Fortran Coder

查看: 8133|回复: 3
打印 上一主题 下一主题

[数值问题] 16位精度问题

[复制链接]

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
跳转到指定楼层
楼主
发表于 2015-3-8 03:54:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我要做的是一个涡模拟的过程,每隔一个时间步长出现一个新的涡,此涡的涡量取决于前面出现的所有的涡,我要算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位,谢谢各位大大能够指点

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2015-3-8 09:04:52 | 只看该作者
本帖最后由 li913 于 2015-3-8 09:07 编辑

2.0q0  或者  2.0_16 或者 2.0_NP

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

QQ截图20150308090545.jpg

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
板凳
发表于 2015-3-8 10:54:13 | 只看该作者
推荐用 2.0_NP 来写常量。

用户输入的 1.0 不需要有后缀,转换时只要变量是16位精度的,一般都不会丢。

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
地板
 楼主| 发表于 2015-3-8 17:25:48 | 只看该作者
谢谢啦!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-27 15:08

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表