public void FourierNaiveIsReversible(FourierOptions options)
        {
            var samples = Generate.RandomComplex(0x80, GetUniform(1));
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            work = Fourier.NaiveForward(work, options);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            work = Fourier.NaiveInverse(work, options);
            AssertHelpers.AlmostEqual(samples, work, 12);
        }
        public void FourierBluesteinIsReversible(FourierOptions options)
        {
            var samples = Generate.RandomComplex(0x7FFF, GetUniform(1));
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            Fourier.BluesteinForward(work, options);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            Fourier.BluesteinInverse(work, options);
            AssertHelpers.AlmostEqual(samples, work, 10);
        }
        public void FourierDefaultTransformIsReversible()
        {
            var samples = Generate.RandomComplex(0x7FFF, GetUniform(1));
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            Transform.FourierForward(work);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            Transform.FourierInverse(work);
            AssertHelpers.ListAlmostEqual(samples, work, 10);

            Transform.FourierInverse(work, FourierOptions.Default);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            Transform.FourierForward(work, FourierOptions.Default);
            AssertHelpers.ListAlmostEqual(samples, work, 10);
        }
        public void FourierRadix2IsReversible(FourierOptions options)
        {
            var dft = new DiscreteFourierTransform();

            var samples = Generate.RandomComplex(0x8000, GetUniform(1));
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            dft.Radix2Forward(work, options);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            dft.Radix2Inverse(work, options);
            AssertHelpers.ListAlmostEqual(samples, work, 12);
        }