changeset 452:5256bd5ef4ac

Pad complex inputs appropriately
author Chris Cannam
date Thu, 24 Oct 2013 15:12:57 +0100
parents c80c82319ad1
children c11bf7397e0e
files src/may/transform/fft.yeti
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/may/transform/fft.yeti	Thu Oct 24 11:17:53 2013 +0100
+++ b/src/may/transform/fft.yeti	Thu Oct 24 15:12:57 2013 +0100
@@ -38,15 +38,16 @@
            (vec.list (vec.slice unp 0 len))
            (vec.list (vec.slice unp len (len*2))));
 
-complexToUnpacked cc is array<cplx> -> ~double[] =
+complexToUnpacked len cc is number -> array<cplx> -> ~double[] =
     vec.primitive
-       (vec.fromList (map complex.real cc ++ map complex.imaginary cc));
+       (vec.resizedTo (len*2)
+           (vec.fromList (map complex.real cc ++ map complex.imaginary cc)));
 
 //!!! doc: n separately as below
 forward n =
    (d = new DoubleFFT_1D(n);
     do cc:
-        arr = complexToUnpacked cc;
+        arr = complexToUnpacked n cc;
         d#complexForward(arr);
         unpackedToComplex n arr;
     done);
@@ -55,7 +56,7 @@
 inverse n =
    (d = new DoubleFFT_1D(n);
     do cc:
-        arr = complexToUnpacked cc;
+        arr = complexToUnpacked n cc;
         d#complexInverse(arr, true);
         unpackedToComplex n arr;
     done);