gpt4 book ai didi

Fortran 90 类参数

转载 作者:行者123 更新时间:2023-12-02 23:46:11 25 4
gpt4 key购买 nike

我无法理解 Fortran 90 的 kind 参数。据我所知,它不能确定变量的精度(即浮点型或 double 型),也不能确定变量的类型。

那么,它决定什么以及它到底有什么作用?

最佳答案

变量的 KIND 是一个整数标签,它告诉编译器应该使用哪种受支持的类型。

请注意,虽然 KIND 参数与该 KIND 变量中存储的字节数相同是常见,但不要求 Fortran 标准。

也就是说,在很多系统上,

REAl(KIND=4) :: xs   ! 4 byte ieee float
REAl(KIND=8) :: xd ! 8 byte ieee float
REAl(KIND=16) :: xq ! 16 byte ieee float

但是可能有编译器,例如:

REAL(KIND=1) :: XS   ! 4 BYTE FLOAT
REAL(KIND=2) :: XD ! 8 BYTE FLOAT
REAL(KIND=3) :: XQ ! 16 BYTE FLOAT

对于整数和逻辑类型也是如此。

(如果我去挖掘,我可能会找到示例。在 usenet 组 comp.lang.fortran 中搜索 kind 来查找示例。那里有关于 Fortran 最丰富的讨论,其中有一些经验丰富的人人们做出贡献。)

因此,如果您不能指望特定类型的值在不同平台上为您提供相同的数据表示形式,您会怎么做?这就是内部函数 SELECTED_REAL_KINDSELECTED_INT_KIND 的用途。基本上,您告诉函数您需要能够表示哪种类型的数字,它将返回您需要使用的类型。

我通常使用这些类型,因为它们通常给我 4 字节和 8 字节实数:

!--! specific precisions, usually same as real and double precision
integer, parameter :: r6 = selected_real_kind(6)
integer, parameter :: r15 = selected_real_kind(15)

所以我可能随后将变量声明为:

real(kind=r15) :: xd

请注意,当您使用混合语言程序时,这可能会导致问题,并且您需要绝对指定变量占用的字节数。如果您需要确定,有一些查询内在函数可以告诉您每种类型的信息,您可以从中推断出变量的内存占用量、其精度、指数范围等。或者,您可以恢复到非标准但常见的 real*4real*8 等声明样式。

当您开始使用新的编译器时,值得查看编译器特定的类型值,以便您知道正在处理什么。在网上搜索 kindfinder.f90 寻找一个方便的程序,它会告诉您编译器可用的类型。

关于Fortran 90 类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com