Review Request: BigInteger patch for efficient multiplication and division (#4837946)

Brian Burkhalter brian.burkhalter at
Thu Apr 25 23:21:08 UTC 2013


We are at long last soon to commence our long overdue effort to integrate this important submission.

To this end I have a couple of questions and a comment below.



On Mar 10, 2013, at 1:39 PM, Tim Buktu wrote:

> I have updated the patch. It now contains Alan Eliasen's fast square() and pow() implementations.
> Special characters have been replaced with ASCII ones.
> Also included is a patched MutableBigInteger which uses the fast division algorithm in BigInteger, and a patched BigDecimal which uses the fast BigInteger.pow() method. Both changes speed up BigDecimal division.
> BigDecimal division is still much slower than BigInteger division (except BigDecimal.divideAndRound) because it calls doRound(), setScale(), and bigMultiplyPowerTen() which are pretty slow. Maybe these
> methods can be made more efficient.
> To view the four patched files (#4 is on one page, go to
> ,
> or get them individually at

This patch differs from the code in Notably I observed that Schonhage-Strassen multiplication and Barrett division are not present. Is this intentional and if so why would that be? Are the implementations of these additional algorithms not quite ready for contribution or is there a licensing issue perhaps?

> Semi-related: I think there is a bug in
> jdk/test/java/math/BigInteger/ and
> jdk/test/java/math/BigDecimal/ It prints failures
> (with or without my patches) but the overall test doesn't fail.

I have taken note of this with the intent of investigating it in the course of evaluating this submission.

More information about the core-libs-dev mailing list