diff options
Diffstat (limited to 'src/signalProcessing/ifft/zfftma.c')
-rw-r--r-- | src/signalProcessing/ifft/zfftma.c | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/src/signalProcessing/ifft/zfftma.c b/src/signalProcessing/ifft/zfftma.c deleted file mode 100644 index d0663122..00000000 --- a/src/signalProcessing/ifft/zfftma.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab - * Copyright (C) 2008 - INRIA - Allan SIMON - * - * This file must be used under the terms of the CeCILL. - * This source file is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at - * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt - * - */ -#define FFT842 1 -#define DFFT2 0 - -#include "fft.h" -#include <stdio.h> - -void zfftma ( doubleComplex* in , int rows, int cols, doubleComplex* out) -{ - -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; - - -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 ); -*/ - - -zimaga ( in , size , imagIn) ; -zreala ( in , size , realIn) ; - -if ( rows == 1 || cols == 1 ) -{ - - /* vector case */ - sizeTemp = (int) pow ( 2 , (int ) (log( size + 0.5 ) /log ( 2 ))) ; - - - - if ( size == sizeTemp ) - { - if ( size <= pow ( 2 , 15 )) - { - /* if the size is a power of 2 and inferior to 2^15 */ - fft842 ( in , size , 0 ); - choosenAlgo = FFT842 ; - } - else - { - /* if the size is a power of 2 and superior to 2^15 */ - dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace*/ ); - } - - - } - else - { - /* all other case of vector */ - dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr /*, workSpace , sizeWorkSpace */); - } - -} - -/* matrix case */ -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*/ ); - } - - /*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++ ) - { - 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 - { - dfft2 ( realIn, imagIn, 1, rows, cols, isn, ierr/*, workSpace, sizeWorkSpace*/); - } -} - -/* here we copy the result into the output , there are two cases because fft842 take a the complex matrix in one block - and dfft2 separate real and imaginary part */ - -if ( choosenAlgo == FFT842 ) - { - for ( i = 0 ; i < size ; i++) - { - out[i] = DoubleComplex ( zreals(in[i]) , zimags(in[i]) ); - } - } -else - { - for ( i = 0 ; i < size ; i++) - { - out[i] = DoubleComplex ( realIn[i] , imagIn[i] ); - } - - } - - -} |