On 12/04/2013 07:32 PM, Brian Burkhalter wrote:
On Dec 4, 2013, at 6:56 PM, Joe Darcy wrote:
As a double-check, can you run the now failing regression test
against the earlier versions of java.math.* between when Karatsuba
and friends went in and the current version of the code?
If I go back to rev 7466
changeset: 7466:9b802d99cb52
user: bpb
date: Wed Jun 19 08:59:39 2013 -0700
summary: 4837946: Faster multiplication and exponentiation of
large integers
changeset: 4554:2a8072c7cf99
user: darcy
date: Wed Sep 14 11:32:11 2011 -0700
summary: 6879143: java.math.BigInteger misses the xxxValueExact
methods
which is when Karatsuba, et. al., were introduced, then the code as-is
in 7466 passes the test in question, but if I change the two
multiplication thresholds to the current values without modifying
anything else, the test fails with similar errors to what was observed
for the current tip. It seems the threshold change exposes a different
profile of numbers to the algorithm which reveals the problem. I
highly doubt any intervening changes are behind this.
Thanks for going the experiment Brian. I'll approve the proposed change
to BigInteger as long as the regression test includes a case which will
fail when run against the uncorrected version of the code.
Alan, IIRC when you first sent the Karatsuba patch in you had a set of
long-running validation tests. Could you rerun those tests on the
version of BigInteger with the new thresholds and Brian's fix?
Thanks,
-Joe