Ejemplo n.º 1
0
        static void Transform(int n, long m, long w, bool result)
        {
            var ntt = new NTT102(n, m, w);
            var f1  = Enumerable.Range(3, 5).Select(v => (long)v).ToArray();
            var f_  = ntt.Transform(f1, false);
            var f2  = ntt.Transform(f_, true).Resize(f1.Length);

            if (result)
            {
                CollectionAssert.AreEqual(f1, f2);
            }
            else
            {
                CollectionAssert.AreNotEqual(f1, f2);
            }
        }
Ejemplo n.º 2
0
        static void Convolution(int n, long m, long w, bool result)
        {
            var ntt      = new NTT102(n, m, w);
            var f        = new long[] { 2, 1, 1 };
            var g        = new long[] { m - 1, m - 1, 1 };
            var expected = new long[] { m - 2, m - 3, 0, 0, 1 };
            var actual   = ntt.Convolution(f, g).Resize(expected.Length);

            if (result)
            {
                CollectionAssert.AreEqual(expected, actual);
            }
            else
            {
                CollectionAssert.AreNotEqual(expected, actual);
            }
        }
Ejemplo n.º 3
0
        public void Convolution_NTT102()
        {
            var ntt = new NTT102(n << 1, true);

            Test(ntt.Convolution);
        }
Ejemplo n.º 4
0
        public void Transform_NTT102()
        {
            var ntt = new NTT102(n, true);

            Test(f => ntt.Transform(f, false), f => ntt.Transform(f, true));
        }