Example #1
0
        public void FourierDefaultTransformIsReversible32()
        {
            var samples = Generate.RandomComplex32(0x7FFF, GetUniform(1));
            var work    = new Complex32[samples.Length];

            samples.CopyTo(work, 0);

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

            Fourier.Inverse(work);
            AssertHelpers.AlmostEqual(samples, work, 10);

            Fourier.Inverse(work, FourierOptions.Default);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            Fourier.Forward(work, FourierOptions.Default);
            AssertHelpers.AlmostEqual(samples, work, 10);
        }
        public void FourierRadix2IsReversible32(FourierOptions options)
        {
            var samples = Generate.RandomComplex32(0x8000, GetUniform(1));
            var work    = new Complex32[samples.Length];

            samples.CopyTo(work, 0);

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

            Fourier.Inverse(work, options);
            AssertHelpers.AlmostEqual(samples, work, 12);
        }
        public void ReferenceDftIsReversible32(FourierOptions options)
        {
            var samples = Generate.RandomComplex32(0x80, GetUniform(1));
            var work    = new Complex32[samples.Length];

            samples.CopyTo(work, 0);

            ReferenceDiscreteFourierTransform.Forward(work, options);
            Assert.IsFalse(work.ListAlmostEqual(samples, 6));

            ReferenceDiscreteFourierTransform.Inverse(work, options);
            AssertHelpers.AlmostEqual(samples, work, 11);
        }