问题描述
我有一个非常具体的算法,需要对Java中的(a * b) / c
进行大量计算,其中:
-
a
和b
是64位长 -
a*b
可能溢出到128位(并非总是,但至少相当普遍) -
c
是64位长 - 结果
(a * b) / c
应该适合64位长(我们需要检测它是否溢出,但是在这种情况下结果并不重要)
是否存在一种有效的算法来执行这种融合的乘除运算?我自然尝试使用BigInteger
,它工作正常,但速度慢得令人无法接受(这是高性能代码)。
我有一个非常具体的算法,需要对Java中的(a * b) / c
进行大量计算,其中:
a
和b
是64位长a*b
可能溢出到128位(并非总是,但至少相当普遍)c
是64位长(a * b) / c
应该适合64位长(我们需要检测它是否溢出,但是在这种情况下结果并不重要)是否存在一种有效的算法来执行这种融合的乘除运算?我自然尝试使用BigInteger
,它工作正常,但速度慢得令人无法接受(这是高性能代码)。