Fortran Coder

查看: 17507|回复: 9
打印 上一主题 下一主题

[求助] 关于FORTRAN的EXP函数

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
楼主
发表于 2021-5-12 08:56:04 | 显示全部楼层
编译器为你提供几种类型的 real,比如 单精度,双精度,四精度(也叫双双精度,有的编译器不提供四精度)
分别用不同的 kind 值来代表,对大部分编译器,上面的三种real类型的kind值是4,8,16(但不一定)


selected_real_kind(p,r)
函数的目的,就是请编译器为你选择合适的real类型。
这个函数,会返回至少满足 p 位十进制有效位数,且能表达最大 r 位十进制的 real 类型中“最小”的那一个。

比如 p=5,r=15那么单精度能满足,双精度也能满足,四精度仍然满足。那么编译器返回单精度的kind值(通常是4)
比如 p=9,r=15那么单精度不能满足,双精度能满足,四精度也满足。那么编译器返回双精度的kind值(通常是8)
而 p=10,r=100,也是一样,单精度不满足,双精度四精度满足。所以也返回双精度的kind值(通常是8)

回到你的问题,
selected_real_kind(16,324),因为双精度只有15位有效数字,所以不能满足,编译器会返回四精度的kind值(通常是16)
selected_real_kind(15,14),双精度可以满足,因此返回双精度的kind值(通常是8)

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
沙发
发表于 2021-5-18 08:30:01 | 显示全部楼层
不是的,p 和 r 都起作用。
SELECTED_REAL_KIND 的作用是:“选择一个精度类型,使其至少满足 p,也同时满足 r。如果同时满足的有多个,则选择占内存更少的那个”

比如
p=5 , r = 30 。返回单精度的kind值

p=5 , r = 80 。则需要返回双精度的kind值。
(因为单精度有效数字是6-7,双精度大约15。都能满足p。但单精度 r 只能到38,要 r=80,必须至少双精度)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 15:09

Powered by Tencent X3.4

© 2013-2024 Tencent

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