如何创建REAL(KIND = 32)变量?

时间:2014-03-13 16:27:32

标签: fortran

使用REAL(KIND = 16)或REAL * 16时,我的程序在精度方面存在一些问题。有没有办法比精确度更高?

1 个答案:

答案 0 :(得分:2)

REAL*32(种类值不能直接移植)将是256位real。没有这种IEEE浮点类型。见http://en.wikipedia.org/wiki/IEEE_floating-point_standard

我不知道支持这种扩展的任何处理器(编译器)。此外,我所知道的硬件本身并没有这样处理。

在如此高的精度下,我会重新考虑算法及其稳定性。程序通常不需要四倍(16字节)精度。即使是双倍也足够了。我用单精度进行了很多计算。

最后,有一些库支持更高的精度,但它们的使用比仅使用不同类型参数重新编译更复杂。见

http://crd-legacy.lbl.gov/~dhbailey/mpdist/

Is there an arbitrary precision floating point library for C/C++ which allows arbitrary precision exponents?


根据特殊要求:种类数量取决于实施方式。种类16可能不存在或者可能不表示IEEE 128位浮点数。在这里看到很多问题 Fortran: integer*4 vs integer(4) vs integer(kind=4) Fortran 90 kind parameter What does `real*8` mean?等等。