mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-05-27 21:20:27 -04:00
generic butterfly slightly slower -- hmmm
This commit is contained in:
parent
a296b09dbf
commit
e9095a161c
53
kiss_fft.c
53
kiss_fft.c
@ -287,31 +287,44 @@ void bfly_generic(
|
|||||||
int p
|
int p
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int u,k,q1,q;
|
int u,q,d;
|
||||||
kiss_fft_cpx * scratch = st->scratch;
|
kiss_fft_cpx * scratch = st->scratch;
|
||||||
kiss_fft_cpx * twiddles = st->twiddles;
|
kiss_fft_cpx * tw = st->twiddles;
|
||||||
kiss_fft_cpx t;
|
kiss_fft_cpx tlo,t1,t2,t3,t4;
|
||||||
int Norig = st->nfft;
|
|
||||||
|
|
||||||
for ( u=0; u<m; ++u ) {
|
for ( u=0; u<m; ++u ) {
|
||||||
k=u;
|
scratch[0] = Fout[u];
|
||||||
for ( q1=0 ; q1<p ; ++q1 ) {
|
|
||||||
scratch[q1] = Fout[ k ];
|
for ( q=1 ; q<p ; ++q ) {
|
||||||
C_FIXDIV(scratch[q1],p);
|
C_MUL( scratch[q] , Fout[ m*q + u] , tw[u*fstride*q] );
|
||||||
k += m;
|
Fout[ m*q + u] = scratch[0];
|
||||||
|
C_ADDTO(Fout[u] , scratch[q] );
|
||||||
}
|
}
|
||||||
|
|
||||||
k=u;
|
for ( q=1; q<p ; ++q ) {
|
||||||
for ( q1=0 ; q1<p ; ++q1 ) {
|
int twidx = q*fstride * m;
|
||||||
int twidx=0;
|
for ( d=1; d<=p/2;++d) {
|
||||||
Fout[ k ] = scratch[0];
|
|
||||||
for (q=1;q<p;++q ) {
|
tlo = tw[ twidx];
|
||||||
twidx += fstride * k;
|
twidx += d*fstride*m;
|
||||||
if (twidx>=Norig) twidx-=Norig;
|
|
||||||
C_MUL(t,scratch[q] , twiddles[twidx] );
|
if (twidx >= st->nfft)
|
||||||
C_ADDTO( Fout[ k ] ,t);
|
twidx -= st->nfft;
|
||||||
|
|
||||||
|
t3.r = scratch[q].r * tlo.r;
|
||||||
|
t3.i = scratch[q].r * tlo.i;
|
||||||
|
t4.r = scratch[q].i * tlo.i;
|
||||||
|
t4.i = - scratch[q].i * tlo.r;
|
||||||
|
|
||||||
|
t1.r = t3.r - t4.r;
|
||||||
|
t1.i = t3.i - t4.i;
|
||||||
|
|
||||||
|
t2.r = t3.r + t4.r;
|
||||||
|
t2.i = - (t3.i + t4.i);
|
||||||
|
|
||||||
|
C_ADDTO( Fout[ m*d+u ] ,t1);
|
||||||
|
C_ADDTO( Fout[ m*(p-d)+u ] ,t2);
|
||||||
}
|
}
|
||||||
k += m;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -338,7 +351,9 @@ void fft_work(
|
|||||||
|
|
||||||
switch (p) {
|
switch (p) {
|
||||||
case 2: bfly2(Fout,fstride,st,m); break;
|
case 2: bfly2(Fout,fstride,st,m); break;
|
||||||
|
#if 0
|
||||||
case 3: bfly3(Fout,fstride,st,m); break;
|
case 3: bfly3(Fout,fstride,st,m); break;
|
||||||
|
#endif
|
||||||
case 4: bfly4(Fout,fstride,st,m); break;
|
case 4: bfly4(Fout,fstride,st,m); break;
|
||||||
case 5: bfly5(Fout,fstride,st,m); break;
|
case 5: bfly5(Fout,fstride,st,m); break;
|
||||||
default: bfly_generic(Fout,fstride,st,m,p); break;
|
default: bfly_generic(Fout,fstride,st,m,p); break;
|
||||||
|
@ -42,9 +42,9 @@ POW3=243 729 2187
|
|||||||
POW5=25 125 625 3125
|
POW5=25 125 625 3125
|
||||||
|
|
||||||
mtime: all bm_fftw
|
mtime: all bm_fftw
|
||||||
@for n in $(NFFT) $(POW2) $(POW3) $(POW5) ;do \
|
for n in $(POW3) ;do \
|
||||||
./$(BENCH) -x $(NUMFFTS) -n $$n;\
|
./$(BENCH) -x $(NUMFFTS) -n $$n;\
|
||||||
[ -x ./bm_fftw ] && ./bm_fftw -x $(NUMFFTS) -n $$n ; \
|
[ "$(DATATYPE)" == "double" ] && [ -x ./bm_fftw ] && ./bm_fftw -x $(NUMFFTS) -n $$n || true ; \
|
||||||
done
|
done
|
||||||
|
|
||||||
snr: all
|
snr: all
|
||||||
|
@ -42,9 +42,9 @@ POW3=243 729 2187
|
|||||||
POW5=25 125 625 3125
|
POW5=25 125 625 3125
|
||||||
|
|
||||||
mtime: all bm_fftw
|
mtime: all bm_fftw
|
||||||
@for n in $(NFFT) $(POW2) $(POW3) $(POW5) ;do \
|
for n in $(POW3) ;do \
|
||||||
./$(BENCH) -x $(NUMFFTS) -n $$n;\
|
./$(BENCH) -x $(NUMFFTS) -n $$n;\
|
||||||
[ -x ./bm_fftw ] && ./bm_fftw -x $(NUMFFTS) -n $$n ; \
|
[ "$(DATATYPE)" == "double" ] && [ -x ./bm_fftw ] && ./bm_fftw -x $(NUMFFTS) -n $$n || true ; \
|
||||||
done
|
done
|
||||||
|
|
||||||
snr: all
|
snr: all
|
||||||
|
Loading…
Reference in New Issue
Block a user