【发布时间】:2014-07-17 05:58:30
【问题描述】:
假设处理器只有符合 IEEE-754 的“fadd”和“fmul”操作(没有“dot”或“fma”指令)。点积运算的简单实现将达到的最坏情况精度是多少。例如,对于长度为 3 的向量:
dot(vec_a, vec_b) = vec_a.x*vec_b.x + vec_a.y*vec_b.y + vec_a.z*vec_b.z
这是我的分析,但我不确定它是否正确: 对于长度为 N 的向量,有 N 次乘法和 N-1 次加法,产生 2N-1 次浮点运算。在最坏的情况下,对于这些操作中的每一个,表示对于准确结果来说都太小了,因此中间结果将被四舍五入。每个舍入加起来 0.5 ULP 误差。那么最大误差将是 (2N-1)*0.5 = N-1/2 ULP?
【问题讨论】:
-
您是否在求和之前对产品向量进行排序,使用例如卡汉求和,还是直接求和?求和的方式会影响该步骤中最坏情况的错误。
-
产品是按元素顺序任意计算的。不能用运行时间换取准确性
标签: floating-point floating-accuracy ieee-754