whoops, no ability to add comments in between functions in pseudocode
[openpower-isa.git] / src / openpower / decoder / isa / fastdct-test.py
index e86e1b8a5bc107ab86d55ce417045227e3c6a8b5..199ea3993837579fe9d7427df84e7464aa0050f7 100644 (file)
 #
 
 import math, random, unittest
-import fastdctlee, naivedct
+import fastdctlee, naivedct, remap_dct_yield
 
 
 class FastDctTest(unittest.TestCase):
 
-    def test_fast_dct_lee_vs_naive(self):
-        for i in range(2, 3):
+    def tst_fast_dct_lee_vs_naive(self):
+        for i in range(3, 4):
             n = 2**i
             vector = FastDctTest.nonrandom_vector(n)
             expect = naivedct.transform(vector)
             original = fastdctlee.transform(vector)
             actual = fastdctlee.transform2(vector)
-            actual = original
             self.assertListAlmostEqual(actual, expect)
             expect = naivedct.inverse_transform(vector)
-            actual = fastdctlee.inverse_transform(vector)
+            original = fastdctlee.inverse_transform2(vector)
+            actual = fastdctlee.inverse_transform_iter(vector)
             self.assertListAlmostEqual(actual, expect)
 
-    def notest_fast_dct_lee_invertibility(self):
+    def test_yield_dct_lee_vs_naive(self):
+        for i in range(2, 10):
+            n = 2**i
+            vector = FastDctTest.nonrandom_vector(n)
+            expect = fastdctlee.transform2(vector)
+            actual = remap_dct_yield.transform2(vector)
+            self.assertListAlmostEqual(actual, expect)
+            expect = naivedct.inverse_transform(vector)
+            actual = fastdctlee.inverse_transform_iter(vector)
+            self.assertListAlmostEqual(actual, expect)
+            actual = remap_dct_yield.inverse_transform2(vector)
+            self.assertListAlmostEqual(actual, expect)
+
+    def tst_fast_dct_lee_invertibility(self):
         for i in range(1, 10):
             n = 2**i
             vector = FastDctTest.random_vector(n)
@@ -49,6 +62,15 @@ class FastDctTest(unittest.TestCase):
             temp = [(val * 2.0 / n) for val in temp]
             self.assertListAlmostEqual(vector, temp)
 
+    def tst_yield_fast_dct_lee_invertibility(self):
+        for i in range(1, 10):
+            n = 2**i
+            vector = FastDctTest.random_vector(n)
+            temp = remap_dct_yield.transform2(vector)
+            temp = fastdctlee.inverse_transform(temp)
+            temp = [(val * 2.0 / n) for val in temp]
+            self.assertListAlmostEqual(vector, temp)
+
     def assertListAlmostEqual(self, actual, expect):
         self.assertEqual(len(actual), len(expect))
         for (x, y) in zip(actual, expect):
@@ -60,7 +82,7 @@ class FastDctTest(unittest.TestCase):
 
     @staticmethod
     def nonrandom_vector(n):
-        return [(i-n/2.0) for i in range(n)]
+        return [(i-n/2.0+pow(1.001, n)) for i in range(n)]
 
 
     _EPSILON = 1e-9