标签: math computer-science
假定支持32位乘积的特定CPU。该问题的应用是内存受限的,因此精度损失被认为是有益的。
我有两个32位整数a和b,4个16位整数c1,c2,d1,d2 让
c = a*b a = 2^16 * c1 + d1 b = 2^16 * c2 + d2
从数学上讲,如果我只得到c,就可以从c中获得c1 * c2和d1 * d2,而无需再计算一次,同时又不会使产品的时间性能保持太差。
请注意,在现代的cpus或gpus中,特定指令可能支持16位乘法。此讨论仅用于一般概念。