Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }