public void testFFTSimple()
        {
            List <Complex> a = new List <Complex>();

            a.Add(new Complex(0, 0));
            a.Add(new Complex(1, 1));
            a.Add(new Complex(3, 3));
            a.Add(new Complex(4, 4));
            a.Add(new Complex(4, 4));
            a.Add(new Complex(3, 3));
            a.Add(new Complex(1, 1));
            a.Add(new Complex(0, 0));

            List <Complex> b = new InitializedList <Complex>(8);

            FastFourierTransform fft = new FastFourierTransform(3);

            fft.transform(a, 0, 8, b);
            List <Complex> expected = new List <Complex>();

            expected.Add(new Complex(16, 16));
            expected.Add(new Complex(-4.8284, -11.6569));
            expected.Add(new Complex(0, 0));
            expected.Add(new Complex(-0.3431, 0.8284));
            expected.Add(new Complex(0, 0));
            expected.Add(new Complex(0.8284, -0.3431));
            expected.Add(new Complex(0, 0));
            expected.Add(new Complex(-11.6569, -4.8284));

            for (int i = 0; i < 8; i++)
            {
                if ((Math.Abs(b[i].Real - expected[i].Real) > 1.0e-2) ||
                    (Math.Abs(b[i].Imaginary - expected[i].Imaginary) > 1.0e-2))
                {
                    QAssert.Fail("Convolution(" + i + ")\n"
                                 + "    calculated: " + b[i] + "\n"
                                 + "    expected:   " + expected[i]);
                }
            }
        }