Attached is the code for regression test for multiply() and pow() in BigInteger. It produces a lot of text (approximately 345 MB) to standard output. You will need to save this output and diff it against known good results. I have provided a file of known good results tested against a variety of platforms, including the Kaffe JVM using the GMP libraries for BigInteger.
It tests a lot of different size arguments, including arguments around many powers of 2, which are the places that one would expect problems to occur. The known good results are available at: http://futureboy.us/temp/BigIntegerGood.txt.bz2 This is a 56 MB download compressed with bzip2. I'd appreciate it if others could test this on other platforms. I don't anticipate any problems, though. I haven't had much time to finish the changes to the pow() function, but there are some more optimizations I'd like to put in. -- Alan Eliasen | "Furious activity is no substitute [EMAIL PROTECTED] | for understanding." http://futureboy.us/ | --H.H. Williams
import java.math.BigInteger; public class BigIntegerRegressionTest { public static void main(String args[]) { BigInteger exp,b,c,r,r1,r2,bb2; for (int ee=0; ee<=1000; ee++) { for (int bb=-10; bb <= 10; bb++) { b = BigInteger.valueOf(bb); r = b.pow(ee); System.out.println("(" + bb + ")" + "^" + ee + "=" + r); } } for (int bb=-10; bb <= 10; bb++) { b = BigInteger.valueOf(bb); for (int ee=0; ee<=100; ee++) { r1 = b.pow(ee); for (int b2=-10; b2 <= 10; b2++) { bb2 = BigInteger.valueOf(b2); for (int e2=0; e2<100; e2++) { r2 = bb2.pow(e2); r = r1.multiply(r2); System.out.println("(" + bb + ")" + "^" + ee + " * (" + b2 + ")" + "^" + e2 + "=" + r); } } } } } }