Beispiel #1
0
        static void Transform(int n, long m, long w, long nInv)
        {
            var ntt = new NTT101(n, m, w, nInv);
            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);

            CollectionAssert.AreEqual(f1, f2);
        }
Beispiel #2
0
        static void Convolution(int n, long m, long w, long nInv)
        {
            var ntt      = new NTT101(n, m, w, nInv);
            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);

            CollectionAssert.AreEqual(expected, actual);
        }