diff options
author | jofret | 2008-12-03 14:22:05 +0000 |
---|---|---|
committer | jofret | 2008-12-03 14:22:05 +0000 |
commit | 35e2984b7e93c1c1ffda95f235199f5d7f806234 (patch) | |
tree | 60bea579f6ac827028bb1902a96cee86382fe7d1 /src/signalProcessing | |
parent | fb58a1fc095ebc227c93ab3d0c532629930c3b0f (diff) | |
download | scilab2c-35e2984b7e93c1c1ffda95f235199f5d7f806234.tar.gz scilab2c-35e2984b7e93c1c1ffda95f235199f5d7f806234.tar.bz2 scilab2c-35e2984b7e93c1c1ffda95f235199f5d7f806234.zip |
Code cleaning
Diffstat (limited to 'src/signalProcessing')
-rw-r--r-- | src/signalProcessing/fft/zfftma.c | 188 |
1 files changed, 88 insertions, 100 deletions
diff --git a/src/signalProcessing/fft/zfftma.c b/src/signalProcessing/fft/zfftma.c index f08158d4..a2d552e1 100644 --- a/src/signalProcessing/fft/zfftma.c +++ b/src/signalProcessing/fft/zfftma.c @@ -12,147 +12,135 @@ #define FFT842 1 #define DFFT2 0 +#include <math.h> +#include <stdlib.h> #include "fft.h" -#include <stdio.h> +#include "lapack.h" +#include "fft_internal.h" void zfftma ( doubleComplex* in , int rows, int cols, doubleComplex* out) { -int choosenAlgo = DFFT2 ; + int choosenAlgo = DFFT2 ; -int size = rows*cols ; -int sizeTemp = 0; -/* -int sizeWorkSpace = size *2; -*/ -int rowsTemp = 0 ; -int colsTemp = 0 ; - -int ierr = 0 ; -int isn = -1; -int i = 0; + int size = rows*cols ; + int sizeTemp = 0; + /* + int sizeWorkSpace = size *2; + */ + int rowsTemp = 0 ; + int colsTemp = 0 ; + int ierr = 0 ; + int isn = -1; + int i = 0; -double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size ); -double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size ); + double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size ); + double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size ); -doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size ); -/* -double* workSpace = (double*) malloc ( sizeof (double) * (unsigned int) sizeWorkSpace ); -*/ + doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size ); + /* + double* workSpace = (double*) malloc ( sizeof (double) * (unsigned int) sizeWorkSpace ); + */ -zimaga ( in , size , imagIn) ; -zreala ( in , size , realIn) ; - -if ( rows == 1 || cols == 1 ) -{ - printf ( "it'a vector \n" ) ; - sizeTemp = (int) pow ( 2 , (int ) (log( size + 0.5 ) /log ( 2 ))) ; - printf ("pow %e , temp %d \n" , pow ( 2 , (int )(log( size +0.5 ) /log ( 2 ))), sizeTemp); + zimaga ( in , size , imagIn) ; + zreala ( in , size , realIn) ; - if ( size == sizeTemp ) - { - if ( size <= pow ( 2 , 15 )) + if ( rows == 1 || cols == 1 ) + { + sizeTemp = (int) pow ( 2 , (int ) (log( size + 0.5 ) /log ( 2 ))) ; + if ( size == sizeTemp ) + { + if ( size <= pow ( 2 , 15 )) { - printf ( "we call fft842 \n" ) ; - fft842 ( in , size , 0 ); - choosenAlgo = FFT842 ; + fft842 ( in , size , 0 ); + choosenAlgo = FFT842 ; } - else + else { - printf ( "we call dfft2 \n" ) ; - dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace*/ ); + dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace*/ ); } - - - } - else - { - printf ( "we call dfft2 2\n" ) ; - dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace */); - } - -} - -else -{ - printf ( "it'a matrix \n" ) ; - rowsTemp = (int) pow ( 2 , log( rows + 0.5) /log ( 2 )) ; - colsTemp = (int) pow ( 2 , log( cols + 0.5) /log ( 2 )) ; - - if ( cols == colsTemp) - { - if ( cols <= pow ( 2 , 15 )) - { - for ( i = 0 ; i < rows ; i++ ) - { + } + else + { + dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace */); + } + } + else + { + rowsTemp = (int) pow ( 2 , log( rows + 0.5) /log ( 2 )) ; + colsTemp = (int) pow ( 2 , log( cols + 0.5) /log ( 2 )) ; + if ( cols == colsTemp) + { + if ( cols <= pow ( 2 , 15 )) + { + for ( i = 0 ; i < rows ; i++ ) + { fft842 ( &in[ cols*i] , cols , 0); choosenAlgo = FFT842 ; - } - } + } + } + else + { + dfft2 ( realIn, imagIn ,rows , cols , 1 , isn , ierr/* ,workSpace , sizeWorkSpace */); + } + } else - { - dfft2 ( realIn, imagIn ,rows , cols , 1 , isn , ierr/* ,workSpace , sizeWorkSpace */); - } - } - else - { - dfft2 ( realIn, imagIn ,rows , cols , 1 , isn , ierr/* ,workSpace , sizeWorkSpace*/ ); - } - - /*second call*/ - - if ( 2*rows <= 0 /* sizeWorkSpace*/ ) - { - if ( rowsTemp == rows ) + { + dfft2 ( realIn, imagIn ,rows , cols , 1 , isn , ierr/* ,workSpace , sizeWorkSpace*/ ); + } + /*second call*/ + if ( 2*rows <= 0 /* sizeWorkSpace*/ ) + { + if ( rowsTemp == rows ) { - if ( rows <= pow ( 2 ,15) ) - { - /*compute the fft on each line of the matrix */ - for (i = 0 ; i < cols ; i++ ) - { + if ( rows <= pow ( 2 ,15) ) + { + /*compute the fft on each line of the matrix */ + for (i = 0 ; i < cols ; i++ ) + { C2F(zcopy) ( rows, in + i, cols, inTemp , 1 ); fft842( inTemp , rows , 0); choosenAlgo = FFT842 ; C2F(zcopy) ( rows, inTemp , cols, in + i, 1 ); - } - } - else - { - dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); - } + } + } + else + { + dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); + } } - else + else { - dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); + dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); } - } - else - { - dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); - } -} + } + else + { + dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); + } + } -if ( choosenAlgo == FFT842 ) + if ( choosenAlgo == FFT842 ) { - for ( i = 0 ; i < size ; i++) + for ( i = 0 ; i < size ; i++) { - out[i] = DoubleComplex ( zreals(in[i]) , zimags(in[i]) ); + out[i] = DoubleComplex ( zreals(in[i]) , zimags(in[i]) ); } } -else + else { - for ( i = 0 ; i < size ; i++) + for ( i = 0 ; i < size ; i++) { - out[i] = DoubleComplex ( realIn[i] , imagIn[i] ); + out[i] = DoubleComplex ( realIn[i] , imagIn[i] ); } } |