Review Request: BigInteger patch for efficient multiplication and division (#4837946)
Tim Buktu
tbuktu at hotmail.com
Sun Mar 10 20:39:43 UTC 2013
Hi,
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 BigIntegerTest.java) on one page,
go to
https://gist.github.com/tbuktu/1576025 ,
or get them individually at
https://gist.github.com/tbuktu/1576025/raw/96e9dfd9261862223aa9ff81618f1d85045e85a5/BigInteger.java
https://gist.github.com/tbuktu/1576025/raw/447db955ef74b065b03b0b45abd443cea5d7b2c6/MutableBigInteger.java
https://gist.github.com/tbuktu/1576025/raw/6863a38032835b48b73cbce5aa833680c881557f/BigDecimal.java
https://gist.github.com/tbuktu/1576025/raw/11977be7d001e093baa915b4370f326e30218eec/BigIntegerTest.java
Semi-related: I think there is a bug in
jdk/test/java/math/BigInteger/CompareToTests.java and
jdk/test/java/math/BigDecimal/CompareToTests.java. It prints failures
(with or without my patches) but the overall test doesn't fail.
Tim
More information about the core-libs-dev
mailing list