public IEnumerable <double> TransformReverse(IEnumerable <double> waveletData) { if (!Scalars.IsPowerOf2(waveletData.Count())) { throw new ArgumentOutOfRangeException("waveletData"); } IntPtr waveletWorkspace = Native.CreateWaveletWorkspace((uint)waveletData.Count()); IntPtr dataPointer = waveletData.Copy(); Native.WaveletTransformReverse(wavelet, waveletWorkspace, dataPointer, (uint)waveletData.Count(), 1); IEnumerable <double> signal = dataPointer.Read <double>(waveletData.Count()); dataPointer.Free(); Native.DisposeWaveletWorkspace(waveletWorkspace); return(signal); }