diff options
author | torset | 2008-12-23 10:49:18 +0000 |
---|---|---|
committer | torset | 2008-12-23 10:49:18 +0000 |
commit | 01f7cdd8d395cab490f682f37ccdffa7b09e7972 (patch) | |
tree | f8fd2f24de867a1c0e192a124f1bd1bd85d5432e | |
parent | bde51df1131f7b5388881bbb17eab41ca1e925bb (diff) | |
download | scilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.tar.gz scilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.tar.bz2 scilab2c-01f7cdd8d395cab490f682f37ccdffa7b09e7972.zip |
redebug ifft
-rw-r--r-- | src/signalProcessing/ifft/difftmx.c | 71 | ||||
-rw-r--r-- | src/signalProcessing/ifft/ifft_internal.h | 25 | ||||
-rw-r--r-- | src/signalProcessing/ifft/zifftma.c | 36 |
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 |