summaryrefslogtreecommitdiff
path: root/src/signalProcessing/fft/dfftbi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/signalProcessing/fft/dfftbi.c')
-rw-r--r--src/signalProcessing/fft/dfftbi.c161
1 files changed, 121 insertions, 40 deletions
diff --git a/src/signalProcessing/fft/dfftbi.c b/src/signalProcessing/fft/dfftbi.c
index 8d3f7846..90494ca3 100644
--- a/src/signalProcessing/fft/dfftbi.c
+++ b/src/signalProcessing/fft/dfftbi.c
@@ -15,11 +15,42 @@
#include "max.h"
#include "fft_internal.h"
+
+/*
+ iIw[0] = 0 ;
+ iIw[1] = 10 ;
+ iIw[2] = 10 ;
+ iIw[3] = lw ;
+ iIw[4] = 10 ;
+
+ iw[0] = 0 ;
+ iw[1] = 10 ;
+ iw[2] = 10 ;
+ iw[3] = lw ;
+ iw[4] = 10 ;
+
+ dfftbi ( a , b , nseg , n , nspn ,
+ isn , ierr , iIw[0], iIw[1] , iIw[2],
+ iIw[3], iIw[4], iw, iIw );
+ void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr, int lout , int lnow ,
+ int lused ,int lmax , int lbook , double* rstak , int* istakk )
+*/
+
void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
- int isn , int ierr , int lout , int lnow , int lused ,
- int lmax , int lbook , double* rstak , int* istak )
+ int isn , int ierr)
{
+ double* rstak ;
+ int* istak ;
+
+ int lout = 0 ;
+ int lnow = 10;
+ int lused= 10;
+ int lmax; /* to compute after*/
+ int lbook = 10 ;
+
+
int nfac[15] ;
int i ;
int in ;
@@ -43,36 +74,39 @@ void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
int nf = abs ( n ) ;
ierr = 0 ;
- printf ( "debut de dfftbi \n" );
+ printf ( "debut de dfftbi \n" );
/*determine the factors of n */
if ( nf == 1)
- {
- printf ( "argh return 1 \n" );
return ;
- }
+
k = nf ;
nspan = abs ( nf*nspn ) ;
ntot = abs ( nspan*nseg) ;
+ printf ( "nspan %d \t ntot %d\n" , nspan ,ntot );
if ( isn*ntot == 0 )
{
ierr = 1 ;
- printf ( "argh return 2 \n" );
return ;
}
- do
+
+
+ while ( (k- (int)(k/16)*16 ) == 0 )
{
m++;
- printf ("m %d ,k %d ,k2 %d\n" , m , k ,(int) (k/16)*16 );
+ printf ("k/16*16\t m %d ,k %d ,k2 %d\n" , m , k ,(int) (k/16)*16 );
nfac[m-1] = 4 ;
k = k >> 4 ;
- }while ( (k- (int)(k/16)*16 ) == 0 );
+ }
+
+
+printf ("avant ploa k %d\n\n" , k );
do
{
while ( k%jj == 0 )
@@ -80,36 +114,40 @@ void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
m++;
nfac[m-1] = j ;
k /= jj ;
+ printf ("\nm %d ,k %d j %d jj %d\n" , m , k ,j , jj);
}
-
+ printf ("40-40 \n" );
j+=2;
jj= j*j ;
}while ( jj <= k);
-printf ( "ploa\n" );
+printf ( "ploa\n" );
+
+
if ( k <= 4)
{
+ printf ("50-50 k %d\t m %d\n" , k , m );
kt = m;
- nfac[m+1] = k;
+ nfac[m] = k;
if ( k != 1 )
m++;
}
else
{
- if ( (k & 7) != 0 )
+ if ( (k & 3) == 0 )
{
m++;
nfac[m-1] = 2 ;
k = k >> 2 ;
}
- /*all square factor out now but k >= 5 still */
+ /*all square factor out now but k >= 5 still */
kt = m ;
maxp = max ( (kt+1)*2 , k-1);
j=2;
-printf ( "plob\n" );
+ printf ( "plob\n" );
do
{
if ( k%j == 0 )
@@ -125,48 +163,68 @@ printf ( "plob\n" );
}
+
+
if ( m <= ( kt+1) )
maxp = m + kt + 1 ;
+ printf ( "90 m %d \t kt %d\n" , m , kt );
+
if ( m + kt > 15)
- {
+ {
ierr = 2 ;
- printf ( "argh return 5 \n" );
+ printf ( "argh return 5 \n" );
return ;
}
+
+/** you are here mister allan **/
+ printf ( "avant test kt , kt =%d\n" , kt );
if ( kt != 0 )
{
j = kt ;
do{
m++;
+ printf ( "100 m %d\t j %d\t nfac[j-1] %d \n" , m , j , nfac[j-1]);
nfac[m-1] = nfac[j-1];
j--;
}while ( j != 0) ;
}
+ printf ( "110 maxf %d \tnfac[maxf-1] %d\n" , m-kt , nfac[m-kt-1]);
maxf = nfac[m-kt-1] ;
if ( kt > 0 )
maxf = max ( nfac[kt-1] , maxf );
- for ( kkk = 1 ; kkk < m ; kkk++ )
+
+ printf ( "avant kkk \tm %d\t maxf %d \n" ,m , maxf);
+
+ for ( kkk = 1 ; kkk <= m ; kkk++ )
+ {
maxf = max ( maxf , nfac[kkk-1]);
+ printf ( "boucle kkk maxf %d nfac %d \tm %d\n" , maxf , nfac[kkk-1] ,m);
+ }
+
+
+
- nitems = maxf * 4 ;
+
+
+
+ nitems = maxf * 4 ;
itype = 4 ;
- istkgt = ( lnow*isize[1] -1)/isize[itype-1] + 2;
- i = ( (istkgt - 1 + nitems) * isize[itype-1] -1) / isize[1] + 3 ;
- printf ("i %d ,\n lmax %d\n istkgt %d\n lnow %d \n", i , lmax , istkgt , lnow ) ;
-
- if ( i > lmax )
- {
- ierr = -i ;
- printf ( "argh return 3 \n" );
- return ;
- }
+ istkgt = 2 + ((lnow-1)/2) ;/*lnow = 10*/
+ istkgt = 6;
+
+ /*i = ( (istkgt - 1 + nitems) * isize[3] -1) + 3 ;*/
+ i = 12 + nitems*2;
+ printf ("i %d ,\n lmax %d\n istkgt %d\n lnow %d \n", i , lmax , istkgt , lnow ) ;
+
+
+ istak = (int*) malloc ( sizeof (int) * (unsigned int) i);
istak[i-2] = itype ;
istak[i-1] = lnow ;
@@ -182,16 +240,17 @@ printf ( "plob\n" );
nitems = maxp ;
itype = 2 ;
- istkgt = ( lnow*isize[1] -1)/isize[itype-1] + 2;
+ /*istkgt = ( lnow*isize[1] -1)/isize[1] + 2;*/
+ istkgt = lnow + 1 ;
+ /*i = ( (istkgt - 1 + nitems) * isize[1] -1) / isize[1] + 3 ;*/
+ i = ( ( lnow + nitems) * isize[1] -1) / isize[1] + 3 ;
+ istak = (int*) realloc ( istak ,sizeof (int) * (unsigned int) i);
+ rstak = (double*) malloc ( sizeof (double) * (unsigned int) i);
+
+ printf ("i %d ,\n lmax %d\n istkgt %d\n lnow %d \n", i , lmax , istkgt , lnow ) ;
+
- i = ( (istkgt - 1 + nitems) * isize[itype-1] -1) / isize[1] + 3 ;
- if ( i > lmax )
- {
- ierr = -i ;
- printf ( "argh return 4 \n" );
- return ;
- }
istak[i-2] = itype ;
istak[i-1] = lnow ;
@@ -209,17 +268,39 @@ c k=2*k-1
c *********************************************
*/
- printf ( "dfftmx me voilĂ  tayoooooooo \n" );
+ printf ( "dfftmx me voilĂ  tayoooooooo \n" );
+ printf ( "ntot \t%d\n"
+ "nf \t%d\n"
+ "nspan\t%d\t\n"
+ "isn\t%d\t\n"
+ "m\t%d\t\n"
+ "kt\t%d\t\n"
+ "j\t%d\t\n"
+ "jj\t%d\t\n"
+ "j2\t%d\n"
+ "j3\t%d\n"
+ "k\t%d\n"
+ , ntot , nf , nspan , isn , m , kt , j ,jj, j2,j3 , k );
dfftmx( a , b , ntot , nf , nspan , isn , m , kt , &rstak[j-1] , &rstak[jj-1] , &rstak[j2-1] , &rstak[j3-1] , &istak[k-1] , nfac);
k =2 ;
in = 2 ;
+/** plop */
+ int iii = 0 ;
+ printf ("\n\n" );
+ for ( iii = 0 ; iii < 3 ; iii++)
+ {
+
+ printf ("\t\t %d dfftbi : %f \t %f\n" , iii ,a[iii], b[iii]);
+
+ }
+/** plop */
if (!( lbook <= lnow && lnow <= lused && lused <= lmax ))
{
ierr = 3 ;
- printf ( "argh return 6 \n" );
+ printf ( "argh return 6 \n" );
return ;
}