math - 整数乘法是否使用 double 浮点实现精确到 2^53?

标签 math floating-point linear-algebra lapack double-precision

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

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

最佳答案

你的分析是正确的:

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

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

    引用 :What every computer scientist should know about floating-point arithmetic .关键部分是与操作有关的 IEEE 标准的讨论。其中包含上面第二个要点的陈述。您已经知道第一个要点,这是完成论证的第二点。

    关于math - 整数乘法是否使用 double 浮点实现精确到 2^53?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14061903/

    相关文章:

    C#:将字节数组转换为 float

    java - la4j 显性特征值 - 将命令式算法转换为 java 8 中的函数式风格

    swift - 扩展 Decimal 以使用舍入(根据 ToBehavior :)

    java - 将数组拆分为两个总和最小的子数组

    python - 用于匹配固定宽度的 float 的正则表达式

    c++ - 如何在 Eigen 中近似比较 vector ?

    performance - 划分两个矩阵时的内存和时间问题

    javascript - 结果不显示

    math - 第 N 个组合

    C 基础知识 : double variable not equal to double expression?