Fortran 如何创建实(种类=32)变量?
当使用REAL(KIND=16)或REAL*16时,我的程序在精度方面有一些问题。有没有比精度更高的方法?Fortran 如何创建实(种类=32)变量?,fortran,Fortran,当使用REAL(KIND=16)或REAL*16时,我的程序在精度方面有一些问题。有没有比精度更高的方法?REAL*32(种类值不能直接移植)将是256位的REAL。没有这样的IEEE浮点类型。看 我不知道有哪个处理器(编译器)支持这种类型的扩展。而且,我所知的任何硬件都无法以本机方式处理此问题 在如此高的精度下,我将重新考虑算法及其稳定性。通常程序需要的精度不超过四字节(16字节)。正常情况下,即使是双倍也足够了。我的许多计算都是单精度的 最后,有些库支持更高的精度,但它们的使用比使用不同种类
REAL*32
(种类值不能直接移植)将是256位的REAL
。没有这样的IEEE浮点类型。看
我不知道有哪个处理器(编译器)支持这种类型的扩展。而且,我所知的任何硬件都无法以本机方式处理此问题
在如此高的精度下,我将重新考虑算法及其稳定性。通常程序需要的精度不超过四字节(16字节)。正常情况下,即使是双倍也足够了。我的许多计算都是单精度的
最后,有些库支持更高的精度,但它们的使用比使用不同种类的参数重新编译更复杂。看
在特殊要求下:种类编号取决于实现。第16类可能不存在,也可能不表示IEEE 128位浮点。这里有很多问题
等等。当前所有Fortran编译器都支持32位和64位浮点数。有些还支持其他尺寸。有关如何指定变量类型的指导,请参见的答案。real(N)与real*N不同,不应使用。你看,我从来没有这样做过,但重复同样的话是很累的。在这里,问题的意图是完全清楚的。REAL*16至少在存储大小上是唯一的,事实上,在我所知道的所有系统上,它都是IEEE 128位浮点。它始终是16个字符(16字节)的实变量,尽管不是标准变量。