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); }
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); }