public void FourierDefaultTransformIsReversible()
        {
            var samples = Sample.Random((u, v) => new Complex(u, v), _uniform, 0x7FFF);
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            Transform.FourierForward(work);

            Assert.IsFalse(work.AlmostEqualListWithError(samples, 1e-12));

            Transform.FourierInverse(work);

            AssertHelpers.AlmostEqualList(samples, work, 1e-12);

            Transform.FourierInverse(work, FourierOptions.Default);

            Assert.IsFalse(work.AlmostEqualListWithError(samples, 1e-12));

            Transform.FourierForward(work, FourierOptions.Default);

            AssertHelpers.AlmostEqualList(samples, work, 1e-12);
        }
        private void VerifyIsReversibleComplex(
            int count,
            double maximumError,
            Func<Complex[], Complex[]> forward,
            Func<Complex[], Complex[]> inverse)
        {
            var samples = Sample.Random((u, v) => new Complex(u, v), _uniform, count);
            var work = new Complex[samples.Length];
            samples.CopyTo(work, 0);

            work = forward(work);

            Assert.IsFalse(work.AlmostEqualListWithError(samples, maximumError));

            work = inverse(work);

            AssertHelpers.AlmostEqualList(samples, work, maximumError);
        }