Example #1
0
        public void LongSquareNumberTest()
        {
            int n = 23 * 1024 - 731;

            ulong[] input1  = new ulong[n];
            ulong[] result1 = new ulong[n * 2];
            ulong[] result2 = new ulong[n * 2];
            ulong[] result3 = new ulong[n * 2];
            Random  random  = new Random(1001);

            for (int i = n; --i >= 0;)
            {
                input1[i] = getUlong(random);
            }
            AsmX64Operations.SetKaratsubaBreakPoint(16);
            AsmX64Operations.SetFourierBreakPoint(12 * 1024);
            AsmX64Operations.FastestSquare(input1, result1, n, false);
            AsmX64Operations.KaratsubaSquare(input1, result2, n);
            AsmX64Operations.Square(input1, result3, n);

            for (int i = n * 2; --i >= 0;)
            {
                if (result1[i] != result2[i] || result2[i] != result3[i])
                {
                    Assert.IsTrue(false);
                    return;
                }
            }
            Assert.IsTrue(true);
        }