diff yetilab/transform/fft.yeti @ 213:d841bfc143dd matrix_opaque_immutable

Update complex, fft
author Chris Cannam
date Sat, 11 May 2013 11:27:34 +0100
parents d0abc9afe608
children ddc8fa794880
line wrap: on
line diff
--- a/yetilab/transform/fft.yeti	Sat May 11 11:19:48 2013 +0100
+++ b/yetilab/transform/fft.yeti	Sat May 11 11:27:34 2013 +0100
@@ -3,12 +3,13 @@
 
 import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D;
 
-b = load yetilab.block.block;
-vec = load yetilab.block.fvector;
+vec = load yetilab.block.vector;
 complex = load yetilab.block.complex;
 
-packedToComplex p =
-   (n = (vec.length p) / 2;
+load yetilab.block.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,23 @@
 
 complexToPacked arr =
    (n = length arr;
-    v = vec.vector
-       (map do i:
+    v = (map do i:
             ix = int (i/2);
             if i == ix*2 then
                 complex.real arr[ix]
             else 
                 complex.imaginary arr[ix] 
             fi;
-            done [0..(n-1)*2-1]);
+            done [0..(n-1)*2-1]) as ~double[];
     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 +43,7 @@
     do arr:
         v = complexToPacked arr;
         d#realInverse(v, true);
-        b.block v;
+        vec.vector v;
     done);
 
 {