5

我问是因为我正在计算所有矩阵值都是整数的矩阵乘法。

我想使用 LAPACK 以便获得正确的快速代码。存储为 s 的两个大整数(其乘积小于2^53double在相乘时会产生double包含精确整数结果的 a 吗?

4

2 回答 2

6

你的分析是正确的:

  • -2 53和 2 53之间的所有整数都可以用双精度精确表示。
  • IEEE754 标准要求精确执行计算,然后四舍五入到最接近的可表示数字。

因此,两个值的乘积等于该范围内的整数,因此将被精确表示。

参考每个计算机科学家都应该知道的关于浮点运算的知识。关键部分是讨论与操作有关的 IEEE 标准。这包含上面第二个要点的陈述。您已经知道第一个要点,而第二个要点完成了论证。

于 2012-12-27T22:11:34.880 回答
4

是的!double 的数据分为符号、指数和分数:

维基百科有一篇文章解释了可表示数字的范围

双字节

-2^53 和 2^53 之间的所有整数都可以双精度表示。

在 2^52=4,503,599,627,370,496 和 2^53=9,007,199,254,740,992 之间,可表示的数字恰好是整数。对于下一个范围,从 2^53 到 2^54,所有内容都乘以 2,因此可表示的数字是偶数等。相反,对于从 2^51 到 2^52 的上一个范围,间距为 0.5 , ETC。

于 2012-12-27T22:12:40.517 回答