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