summaryrefslogtreecommitdiff
path: root/src/signalProcessing/ifft/zfftma.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/signalProcessing/ifft/zfftma.c')
-rw-r--r--src/signalProcessing/ifft/zfftma.c164
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] );
- }
-
- }
-
-
-}