From 008d7fd4ea3ededc761638c6849e34a875d546c8 Mon Sep 17 00:00:00 2001 From: Mark Borgerding Date: Tue, 9 Dec 2003 01:37:48 +0000 Subject: [PATCH] zero case optimized --- kiss_fftr.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/kiss_fftr.c b/kiss_fftr.c index bac4b02..e1b322c 100644 --- a/kiss_fftr.c +++ b/kiss_fftr.c @@ -74,32 +74,27 @@ void kiss_fftr(const void * cfg,const kiss_fft_scalar *fin,kiss_fft_cpx *fout) /*perform the parallel fft of two real signals packed in real,imag*/ kiss_fft( st->substate , (const kiss_fft_cpx*)fin, st->tmpbuf ); - for (k=0;ktmpbuf[k]; - /* fpk is Fp[k] */ + fout[0].r = st->tmpbuf[0].r + st->tmpbuf[0].i; + fout[0].i = 0; - if (k==0) - fpnk = st->tmpbuf[0]; - else - fpnk = st->tmpbuf[N-k]; - fpnk.i = fpnk.i * -1; - /* fpnk is Fp[-k].conjugate() */ + for (k=1;ktmpbuf[k]; + + fpnk.r = st->tmpbuf[N-k].r; + fpnk.i = -st->tmpbuf[N-k].i; C_ADD( f1k, fpk , fpnk ); - /*printf("F1k[%d]:",k); pcpx(&f1k); */ + C_SUBFROM( fpk , fpnk ); - C_SUB( scr[0], fpk , fpnk ); - f2k.r = scr[0].i; - f2k.i = -scr[0].r; - /* - printf("F2k[%d]:",k); pcpx(&f2k); - */ + f2k.r = fpk.i; + f2k.i = -fpk.r; C_MUL( scr[1], f2k , st->super_twiddles[k] ); C_ADD(fout[k],f1k,scr[1]); + fout[k].r /= 2; fout[k].i /= 2; }