【发布时间】:2017-07-25 08:18:01
【问题描述】:
我有一个 64 位的 linux 系统。我使用 gfortran 编译并运行我的 Fortran 代码,这会将一些数字输出为双精度,即 ~ 16 位小数。例如
gfortran some_code.f -o executable1
./executable1
10.1234567898765432
如果我现在使用标志-fdefault-real-8 进行编译,则 Fortran 双精度类型将提升为 16 字节 = 128 位,并输出一些数字,但精度更高~小数点后 33 位。例如
gfortran -fdefault-real-8 some_code.f -o executable2
./executable2
10.12345678987654321234567898765432
我的问题是:如果我的电脑只有 64 位,这个计算怎么能做到如此高精度?
【问题讨论】:
-
这是所有(可能在)软件。您甚至可以拥有更多更高的精度(数百万位)。这完全取决于所使用的软件/算法。尽管有许多可能的技巧和算法来加快速度,但精度越高,过程往往就越慢。 CPU 是 64 位的事实与此无关。这也可以在 32 位或 16 位处理器上完成。
-
双精度提升为 128 位如果可能。更有可能的是,在 x86 等典型的现代硬件上,它将保持 64 位。
标签: floating-point fortran 64-bit gfortran quadruple-precision