change
authorbdemsky <bdemsky>
Wed, 11 Mar 2009 06:22:41 +0000 (06:22 +0000)
committerbdemsky <bdemsky>
Wed, 11 Mar 2009 06:22:41 +0000 (06:22 +0000)
Robust/src/Benchmarks/Prefetch/2DFFT/javasingle/fft2d.java

index 2aa25ba6793b22fa571e92d1c9dc8b449864b678..aafdf35a7b2e22be4f8d78d50841759195a1c017 100644 (file)
@@ -9,13 +9,12 @@ public class fft2d {
   //
   // Code borrowed from :Java Digital Signal Processing book by Lyon and Rao
 
-  public Matrix data1, data2;
+  public Matrix data1;
   public int x0, x1;
 
   // Constructor: 2-d FFT of Complex data.
-  public fft2d(Matrix data1, Matrix data2, int x0, int x1) {
+    public fft2d(Matrix data1, int x0, int x1) {
     this.data1 = data1;
-    this.data2 = data2;
     this.x0 = x0;
     this.x1 = x1;
   }
@@ -42,17 +41,16 @@ public class fft2d {
       double inputIm[] = tempdataIm[i];
       fft(fft1, inputRe, inputIm);
     } //end of for
-
     // Tranpose data.
     if (start == 0) {
-      transpose(tempdataRe,tempdataIm, data2.dataRe,data2.dataIm, rowlength, columnlength);
+      transpose(tempdataRe,tempdataIm,  rowlength, columnlength);
     }
 
     // Calculate FFT for each column of the data.
     double transtempRe[][];
     double transtempIm[][];
-    transtempRe = data2.dataRe;
-    transtempIm = data2.dataIm;
+    transtempRe = data1.dataRe;
+    transtempIm = data1.dataIm;
     for (int j = start; j < end; j++) {
       //input of FFT
       double inputRe[] = transtempRe[j]; //local array
@@ -61,14 +59,18 @@ public class fft2d {
     } //end of fft2 for
   } //end of run
 
-  public void transpose(double[][] tempdataRe, double[][] tempdataIm, double[][] outputRe, 
-      double[][] outputIm, int rowlength, int columnlength) {
+  public void transpose(double[][] tempdataRe, double[][] tempdataIm, int rowlength, int columnlength) {
     for(int i = 0; i<rowlength; i++) {
       double tRe[] = tempdataRe[i];
       double tIm[] = tempdataIm[i];
-      for(int j = 0; j<columnlength; j++) {
-        outputRe[j][i] = tRe[j];
-        outputIm[j][i] = tIm[j];
+      double a;
+      for(int j = 0; j<i; j++) {
+         a=tempdataRe[j][i];
+         tempdataRe[j][i] = tRe[j];
+         tRe[j]=a;
+         a=tempdataIm[j][i];
+         tempdataIm[j][i] = tIm[j];
+         tIm[j]=a;
       }
     }
   }
@@ -86,23 +88,20 @@ public class fft2d {
     System.printString("Num threads = " + NUM_THREADS + " SIZE= " + SIZE + "\n");
 
     Matrix data1;
-    Matrix data2;
 
     // Create threads to do FFT
     fft2d[] myfft2d;
     // Set up data for FFT transform
     data1 = new Matrix(SIZE, SIZE);
-    data2 = new Matrix(SIZE, SIZE);
     data1.setValues(); //Input Matrix
-    data2.setZeros(); //Transpose Matrix
     myfft2d = new fft2d[NUM_THREADS];
     int increment = SIZE/NUM_THREADS;
     int base = 0;
     for(int i =0 ; i<NUM_THREADS; i++) {
       if((i+1)==NUM_THREADS)
-        myfft2d[i] = new fft2d(data1, data2, base, SIZE);
+         myfft2d[i] = new fft2d(data1, base, SIZE);
       else
-        myfft2d[i] = new fft2d(data1, data2, base, base+increment);
+         myfft2d[i] = new fft2d(data1, base, base+increment);
       base+=increment;
     }