diff yetilab/transform/fft.yeti @ 223:51af10e6cd0d

Merge from matrix_opaque_immutable branch
author Chris Cannam
date Sat, 11 May 2013 16:00:58 +0100
parents 77c6a81c577f
children d7dd391a90fd
line wrap: on
line diff
--- a/yetilab/transform/fft.yeti	Tue May 07 21:43:10 2013 +0100
+++ b/yetilab/transform/fft.yeti	Sat May 11 16:00:58 2013 +0100
@@ -3,12 +3,13 @@
 
 import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D;
 
-b = load yetilab.block.block;
-vec = load yetilab.block.fvector;
-complex = load yetilab.block.complex;
+vec = load yetilab.vector.vector;
+complex = load yetilab.vector.complex;
 
-packedToComplex p =
-   (n = (vec.length p) / 2;
+load yetilab.vector.complextype;
+
+packedToComplex len p is number -> ~double[] -> array<cplx> =
+   (n = len / 2;
     array
        (map do i:
             re = if i == n then p[1] else p[i*2] fi;
@@ -18,24 +19,25 @@
 
 complexToPacked arr =
    (n = length arr;
-    v = vec.vector
-       (map do i:
-            ix = int (i/2);
+    v = new double[n*2-2];
+    for [0..(n-1)*2-1] do i:
+        ix = int (i/2);
+        v[i] :=
             if i == ix*2 then
                 complex.real arr[ix]
             else 
                 complex.imaginary arr[ix] 
             fi;
-            done [0..(n-1)*2-1]);
+    done;
     v[1] := complex.real arr[n-1];
     v);
 
 realForward n = 
    (d = new DoubleFFT_1D(n);
     do bl:
-        v = b.vector bl;
+        v = vec.primitive bl;
         d#realForward(v);
-        packedToComplex v;
+        packedToComplex (vec.length bl) v;
     done);
 
 realInverse n = 
@@ -43,7 +45,7 @@
     do arr:
         v = complexToPacked arr;
         d#realInverse(v, true);
-        b.block v;
+        vec.vector v;
     done);
 
 {