public void ExpandMulTest() { Random random = new Random(1234); for (int i = 0; i <= 50000; i++) { int bits1 = random.Next(BigUInt <Pow2.N32> .Bits + 1); int bits2 = random.Next(BigUInt <Pow2.N32> .Bits + 1); UInt32[] value1 = UIntUtil.Random(random, BigUInt <Pow2.N32> .Length, bits1); UInt32[] value2 = UIntUtil.Random(random, BigUInt <Pow2.N32> .Length, bits2); BigUInt <Pow2.N32> v1 = new BigUInt <Pow2.N32>(value1, enable_clone: false); BigUInt <Pow2.N32> v2 = new BigUInt <Pow2.N32>(value2, enable_clone: false); BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <Pow2.N32> > v = BigUInt <Pow2.N32> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } }
public void ExpandMulFullTest() { { BigUInt <Pow2.N32> v1 = BigUInt <Pow2.N32> .Full; BigUInt <Pow2.N32> v2 = BigUInt <Pow2.N32> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <Pow2.N32> > v = BigUInt <Pow2.N32> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } { BigUInt <Pow2.N8> v1 = BigUInt <Pow2.N8> .Full; BigUInt <Pow2.N8> v2 = BigUInt <Pow2.N8> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <Pow2.N8> > v = BigUInt <Pow2.N8> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } { BigUInt <N9> v1 = BigUInt <N9> .Full; BigUInt <N9> v2 = BigUInt <N9> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <N9> > v = BigUInt <N9> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } { BigUInt <N10> v1 = BigUInt <N10> .Full; BigUInt <N10> v2 = BigUInt <N10> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <N10> > v = BigUInt <N10> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } { BigUInt <N11> v1 = BigUInt <N11> .Full; BigUInt <N11> v2 = BigUInt <N11> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <N11> > v = BigUInt <N11> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } { BigUInt <N12> v1 = BigUInt <N12> .Full; BigUInt <N12> v2 = BigUInt <N12> .Full; BigInteger bi1 = v1, bi2 = v2; BigUInt <Double <N12> > v = BigUInt <N12> .ExpandMul(v1, v2); BigInteger bi = bi1 * bi2; Console.WriteLine(bi); Console.WriteLine(v); Assert.AreEqual(bi, v); } }