我们正在使用以下算法进行一些32bit * 32bit乘法
让我们我们想将a(32位)与b(32位)相乘,两者都带符号,
a = ah * 2 ^ 16 + al [ah-高16位,al-低16位]
b = bh * 2 ^ 16 + bl [bh-高16位,bl-低16位]
我们正在有效地做
结果=(al * bl)+(((ah * bl)+(al * bh)) 2 ^ 16)+((ah * bh) 2 ^ 32)~~~
我的问题,
他们有更好的方法吗?
在任何主流编译器中,在32位平台上仿真64位int都将与自己进行多步数学运算一样有效。但是它将更加可靠地正确。
当使用值足以溢出的简单算术进行运算时,即使是我见过的最优化的数学库,也只使用int64。