Java 128位融合乘法和除法-是否有一种有效的算法?

问题描述

我有一个非常具体的算法,需要对Java中的(a * b) / c进行大量计算,其中:

  • ab是64位长
  • a*b可能溢出到128位(并非总是,但至少相当普遍)
  • c是64位长
  • 结果(a * b) / c应该适合64位长(我们需要检测它是否溢出,但是在这种情况下结果并不重要)

是否存在一种有效的算法来执行这种融合的乘除运算?我自然尝试使用BigInteger,它工作正常,但速度慢得令人无法接受(这是高性能代码)。

解决方法

Booth's multiplication algorithm

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...