random experimentation landed eventually on a "pass" of iDCT with
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 29 Jul 2021 22:11:59 +0000 (23:11 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 29 Jul 2021 22:11:59 +0000 (23:11 +0100)
in-place half-swapping

src/openpower/decoder/isa/fastdct-test.py
src/openpower/decoder/isa/fastdctlee.py

index 72414d5cc59bf93fb5cfcfe5d91fbc7fc5b59965..c3aacd6bc39e104f57f4df9374d051be153c22aa 100644 (file)
@@ -28,7 +28,7 @@ import fastdctlee, naivedct, remap_dct_yield
 class FastDctTest(unittest.TestCase):
 
     def test_fast_dct_lee_vs_naive(self):
-        for i in range(3, 4):
+        for i in range(3, 10):
             n = 2**i
             vector = FastDctTest.nonrandom_vector(n)
             expect = naivedct.transform(vector)
index 16de9cb7970738ee7f3fd95ec24cc15f647473a0..c558aec629165aed933b118ab10096d16e39ece6 100644 (file)
@@ -359,8 +359,8 @@ def inverse_transform_iter(vec):
     vec[0] /= 2.0
 
     print("transform2-inv pre-itersum", vec)
-    #vec = halfrev2(vec, True)
     vec = [vec[ri[i]] for i in range(n)]
+    vec = halfrev2(vec, True)
     #print("transform2-inv post-itersum-reorder", vec)
 
     # first the outer butterfly (iterative sum thing)
@@ -375,9 +375,9 @@ def inverse_transform_iter(vec):
             jr.reverse()
             print ("itersum    jr", i+halfsize, i+size, jr)
             for jh in jr:
-                x = vec[ri[jh]]
-                y = vec[ri[jh+size]]
-                vec[ri[jh+size]] = x + y
+                x = vec[ji[ri[jh]]]
+                y = vec[ji[ri[jh+size]]]
+                vec[ji[ri[jh+size]]] = x + y
                 print ("    itersum", size, i, jh, jh+size,
                         x, y, "jh+sz", vec[ji[jh+size]])
         size *= 2
@@ -386,7 +386,7 @@ def inverse_transform_iter(vec):
 
     # and pretend we LDed data in half-swapped *and* bit-reversed order as well
     # TODO: merge these two
-    vec = halfrev2(vec, True)
+    #vec = halfrev2(vec, True)
     ri = list(range(n))
 
     print("transform2-inv post-reorder", vec)