public void TestHaarReversiblitySingle()
        {
            Single[] array = new Single[2048];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = (Single)Math.Sin(2.0 * Math.PI * i / array.Length);
            }
            Single[] copy = new Single[array.Length];
            Array.Copy(array, copy, array.Length);

            Span <Single> span = new Span <Single>(array);

            WaveletTransformation.HaarMultiLevel(span);
            Span <Single> transformed = stackalloc Single[array.Length];

            span.CopyTo(transformed);

            WaveletTransformation.HaarInverseMultiLevel(span);

            try
            {
                for (int i = 0; i < array.Length; i++)
                {
                    Assert.AreEqual(copy[i], array[i], -1.0 / short.MinValue);
                }
                Console.WriteLine("Source,Transformed");
                for (int i = 0; i < array.Length; i++)
                {
                    Console.WriteLine($"{copy[i]}, {transformed[i]}");
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Expected,Actual");
                for (int i = 0; i < array.Length; i++)
                {
                    Console.WriteLine($"{copy[i]}, {array[i]}");
                }
                throw;
            }
        }
Example #2
0
        public void TestHaarReversiblityInt()
        {
            int[] array = new int[2048];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = (int)(int.MaxValue * Math.Sin(2.0 * Math.PI * i / array.Length));
            }
            int[] copy = new int[array.Length];
            Array.Copy(array, copy, array.Length);

            Span <int> span = new Span <int>(array);

            WaveletTransformation.HaarMultiLevel(span);

            Span <int> transformed = stackalloc int[array.Length];

            span.CopyTo(transformed);

            WaveletTransformation.HaarInverseMultiLevel(span);
            AssertEqualityAndDumpInt(array, copy, transformed);
        }