summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2008-12-23 10:49:18 +0000
committertorset2008-12-23 10:49:18 +0000
commit01f7cdd8d395cab490f682f37ccdffa7b09e7972 (patch)
treef8fd2f24de867a1c0e192a124f1bd1bd85d5432e
parentbde51df1131f7b5388881bbb17eab41ca1e925bb (diff)
downloadscilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.tar.gz
scilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.tar.bz2
scilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.zip
redebug ifft
-rw-r--r--src/signalProcessing/ifft/difftmx.c71
-rw-r--r--src/signalProcessing/ifft/ifft_internal.h25
-rw-r--r--src/signalProcessing/ifft/zifftma.c36
3 files changed, 65 insertions, 67 deletions
diff --git a/src/signalProcessing/ifft/difftmx.c b/src/signalProcessing/ifft/difftmx.c
index e1ec428d..a3760cec 100644
--- a/src/signalProcessing/ifft/difftmx.c
+++ b/src/signalProcessing/ifft/difftmx.c
@@ -88,7 +88,32 @@ static int i ;
static int j ;
static int jj;
-
+/* Prototypes */
+
+static void preliminaryWork (void);
+static void permute_stage1 (void);
+static void permute_stage2 (void);
+static void f4t_150 (void);
+static void factorOf3Transform (void) ;
+static void factorOf5Transform (void) ;
+static void preFOtherTransform (void);
+static void factorOfOtherTransform (void);
+static void pre_sqFactor2NormlOrder (void);
+static void nonSqFactor2NormOrder (void) ;
+static void detPermutCycles (void);
+static void reorderMatrix (void ) ;
+
+static int f4t_170 (void);
+static int factorTransform (void);
+static int pre_fOf2Trans (void);
+static int factorOf2Transform (void);
+static int factorOf4Transform (void);
+static int mulByRotationFactor (void );
+static int post_sqFactor2NormlOrder (void);
+static void single_sqFactor2NormlOrder (void);
+static int multi_sqFactor2NormlOrder (void);
+
+/* End Prototypes */
@@ -176,7 +201,7 @@ Sous-Fonctions
-void preliminaryWork (void)
+static void preliminaryWork (void)
{
int lim ;
@@ -221,7 +246,7 @@ void preliminaryWork (void)
factor are stored in nfac
*/
-int factorTransform (void)
+static int factorTransform (void)
{
int retVal = 42;
@@ -297,7 +322,7 @@ switch ( nfac[i-1] )
}
/* permutation for square factor of n */
-void permute_stage1 (void)
+static void permute_stage1 (void)
{
int retVal = 1 ;
@@ -317,7 +342,7 @@ void permute_stage1 (void)
}
-void permute_stage2 (void)
+static void permute_stage2 (void)
{
kspnn = np[kt] ;
@@ -348,7 +373,7 @@ Sous-Sous-Fonctions
-int pre_fOf2Trans (void)
+static int pre_fOf2Trans (void)
{
kspan /= 2;
k1 = kspan + 2 ;
@@ -380,7 +405,7 @@ int pre_fOf2Trans (void)
-int factorOf2Transform (void)
+static int factorOf2Transform (void)
{
do /*60*/ {/*while ( kk <= jc*2 )*/
c1 = 1 - cd ;
@@ -447,7 +472,7 @@ int factorOf2Transform (void)
/* this one is just an optimisation of the factor of 2 transform , we compute more things each turn */
-int factorOf4Transform (void)
+static int factorOf4Transform (void)
{
int return_value = 0 ;
@@ -481,7 +506,7 @@ int factorOf4Transform (void)
/*this function and the following are just here for conveniance , they just do fourier transformation for factor of 4
but as the code was a bit long in factorof4transform , we've created two sub-functions */
-void f4t_150 (void)
+static void f4t_150 (void)
{
do{
@@ -542,7 +567,7 @@ void f4t_150 (void)
}
-int f4t_170 (void)
+static int f4t_170 (void)
{
kk += ( jc - nt ) ;
@@ -598,7 +623,7 @@ int f4t_170 (void)
-void factorOf3Transform (void)
+static void factorOf3Transform (void)
{
do{
do{
@@ -633,7 +658,7 @@ void factorOf3Transform (void)
}
-void factorOf5Transform (void)
+static void factorOf5Transform (void)
{
c2 = c72*c72 - s72 *s72 ;
s2 = 2 * c72*s72;
@@ -699,10 +724,8 @@ void factorOf5Transform (void)
special case of this one */
-void preFOtherTransform (void)
+static void preFOtherTransform (void)
{
-printf("0.k=%d \n",k);
-
jf = k ;
s1 = (rad*8)/k ;
c1 = cos (s1) ;
@@ -727,7 +750,7 @@ printf("0.k=%d \n",k);
}
-void factorOfOtherTransform (void)
+static void factorOfOtherTransform (void)
{
int ktemp = 0 ;
@@ -823,7 +846,7 @@ do
-int mulByRotationFactor (void )
+static int mulByRotationFactor (void )
{
int ktemp = 0 ;
@@ -920,7 +943,7 @@ int mulByRotationFactor (void )
-void pre_sqFactor2NormlOrder (void)
+static void pre_sqFactor2NormlOrder (void)
{
k = kt + kt + 1 ;
@@ -949,7 +972,7 @@ void pre_sqFactor2NormlOrder (void)
}
-int post_sqFactor2NormlOrder (void)
+static int post_sqFactor2NormlOrder (void)
{
do
@@ -989,7 +1012,7 @@ int post_sqFactor2NormlOrder (void)
/* appeler cetter fonction dans un do while valeur_retour != 1)*/
-void single_sqFactor2NormlOrder (void)
+static void single_sqFactor2NormlOrder (void)
{
@@ -1012,7 +1035,7 @@ void single_sqFactor2NormlOrder (void)
}
/*idem que single_ */
-int multi_sqFactor2NormlOrder (void)
+static int multi_sqFactor2NormlOrder (void)
{
@@ -1058,7 +1081,7 @@ int multi_sqFactor2NormlOrder (void)
-void nonSqFactor2NormOrder (void)
+static void nonSqFactor2NormOrder (void)
{
j = m - kt ;
@@ -1119,7 +1142,7 @@ void nonSqFactor2NormOrder (void)
}
/* here we determine how many permutation cycles we need to do */
-void detPermutCycles (void)
+static void detPermutCycles (void)
{
do
@@ -1152,7 +1175,7 @@ void detPermutCycles (void)
return ;
}
-void reorderMatrix (void)
+static void reorderMatrix (void)
{
do
{
diff --git a/src/signalProcessing/ifft/ifft_internal.h b/src/signalProcessing/ifft/ifft_internal.h
index d5d22782..7b920aa6 100644
--- a/src/signalProcessing/ifft/ifft_internal.h
+++ b/src/signalProcessing/ifft/ifft_internal.h
@@ -39,31 +39,6 @@ int difftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan
int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac);
-/* under functions used by dfftmx */
- void preliminaryWork (void);
- void preliminaryWork (void);
- void permute_stage1 (void);
- void permute_stage2 (void);
- void f4t_150 (void);
- void factorOf3Transform (void) ;
- void factorOf5Transform (void) ;
- void preFOtherTransform (void);
- void factorOfOtherTransform (void);
- void pre_sqFactor2NormlOrder (void);
- void nonSqFactor2NormOrder (void) ;
- void detPermutCycles (void);
- void reorderMatrix (void ) ;
- int f4t_170 (void);
- int factorTransform (void);
- int pre_fOf2Trans (void);
- int factorOf2Transform (void);
- int factorOf4Transform (void);
- int mulByRotationFactor (void );
- int post_sqFactor2NormlOrder (void);
- void single_sqFactor2NormlOrder (void);
- int preF2transform (void) ;
- int multi_sqFactor2NormlOrder (void);
-/* int end (void) ;*/
#endif /* !__IFFT_INTERNAL_H__ */
diff --git a/src/signalProcessing/ifft/zifftma.c b/src/signalProcessing/ifft/zifftma.c
index 8968b359..e5288597 100644
--- a/src/signalProcessing/ifft/zifftma.c
+++ b/src/signalProcessing/ifft/zifftma.c
@@ -29,37 +29,36 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
int ierr = 0 ;
int isn = 1;
int i = 0;
-
+
+ int increment=1;
double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
-
-
+ doubleComplex* inCopy = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size );
+
doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size );
zimaga ( in , size , imagIn) ;
zreala ( in , size , realIn) ;
-
+ for (i=0;i<size;i++) inCopy[i]=in[i];
+
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);
+
if ( size == sizeTemp )
{
if ( size <= pow ( 2 , 15 ))
{
- printf ( "we call ifft842 \n" ) ;
- ifft842 ( in , size , 1 );
+ ifft842 ( inCopy , size , 1 );
choosenAlgo = IFFT842 ;
}
else
{
- printf ( "we call dfft2 \n" ) ;
difft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr);
}
@@ -67,7 +66,6 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
}
else
{
- printf ( "we call dfft2 2\n" ) ;
difft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr);
}
@@ -75,9 +73,8 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
else
{
- printf ( "it'a matrix \n" ) ;
- rowsTemp = (int) pow ( 2 ,(int) log( rows + 0.5) /log ( 2 )) ;
- colsTemp = (int) pow ( 2 ,(int) log( cols + 0.5) /log ( 2 )) ;
+ rowsTemp = (int) pow ( 2 ,(int) (log( rows + 0.5) /log ( 2 ))) ;
+ colsTemp = (int) pow ( 2 ,(int) (log( cols + 0.5) /log ( 2 ))) ;
if ( rows == rowsTemp)
{
@@ -85,18 +82,21 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
{
for ( i = 0 ; i < cols ; i++ )
{
- ifft842 ( &in[ rows*i] , rows , 1);
- choosenAlgo = IFFT842 ;
+ ifft842 ( &inCopy[ rows*i] , rows , 1);
+ zimaga ( inCopy , size , imagIn) ;
+ zreala ( inCopy , size , realIn) ;
}
}
else
{
difft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
}
}
else
{
difft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
}
/*second call*/
@@ -107,11 +107,11 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
/*compute the fft on each line of the matrix */
for (i = 0 ; i < rows ; i++ )
{
- C2F(zcopy) ( cols, in + i, rows, inTemp , 1 );
+ C2F(zcopy) ( &cols, inCopy + i, &rows, inTemp , &increment );
ifft842( inTemp , cols , 1);
choosenAlgo = IFFT842 ;
- C2F(zcopy) ( cols, inTemp , 1, in + i, rows);
+ C2F(zcopy) ( &cols, inTemp , &increment, inCopy + i, &rows);
}
}
@@ -133,7 +133,7 @@ void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
{
for ( i = 0 ; i < size ; i++)
{
- out[i] = DoubleComplex ( zreals(in[i]) , zimags(in[i]) );
+ out[i] = DoubleComplex ( zreals(inCopy[i]) , zimags(inCopy[i]) );
}
}
else