mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-05-27 21:20:27 -04:00
zero case optimized
This commit is contained in:
parent
548032e305
commit
008d7fd4ea
31
kiss_fftr.c
31
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*/
|
/*perform the parallel fft of two real signals packed in real,imag*/
|
||||||
kiss_fft( st->substate , (const kiss_fft_cpx*)fin, st->tmpbuf );
|
kiss_fft( st->substate , (const kiss_fft_cpx*)fin, st->tmpbuf );
|
||||||
|
|
||||||
for (k=0;k<N;++k) {
|
fout[0].r = st->tmpbuf[0].r + st->tmpbuf[0].i;
|
||||||
kiss_fft_cpx fpnk,fpk,f1k,f2k,scr[3];
|
fout[0].i = 0;
|
||||||
|
|
||||||
fpk = st->tmpbuf[k];
|
|
||||||
/* fpk is Fp[k] */
|
|
||||||
|
|
||||||
if (k==0)
|
for (k=1;k<N;++k) {
|
||||||
fpnk = st->tmpbuf[0];
|
kiss_fft_cpx fpnk,fpk,f1k,f2k,scr[2];
|
||||||
else
|
|
||||||
fpnk = st->tmpbuf[N-k];
|
fpk = st->tmpbuf[k];
|
||||||
fpnk.i = fpnk.i * -1;
|
|
||||||
/* fpnk is Fp[-k].conjugate() */
|
fpnk.r = st->tmpbuf[N-k].r;
|
||||||
|
fpnk.i = -st->tmpbuf[N-k].i;
|
||||||
|
|
||||||
C_ADD( f1k, fpk , fpnk );
|
C_ADD( f1k, fpk , fpnk );
|
||||||
/*printf("F1k[%d]:",k); pcpx(&f1k); */
|
C_SUBFROM( fpk , fpnk );
|
||||||
|
|
||||||
C_SUB( scr[0], fpk , fpnk );
|
f2k.r = fpk.i;
|
||||||
f2k.r = scr[0].i;
|
f2k.i = -fpk.r;
|
||||||
f2k.i = -scr[0].r;
|
|
||||||
/*
|
|
||||||
printf("F2k[%d]:",k); pcpx(&f2k);
|
|
||||||
*/
|
|
||||||
|
|
||||||
C_MUL( scr[1], f2k , st->super_twiddles[k] );
|
C_MUL( scr[1], f2k , st->super_twiddles[k] );
|
||||||
|
|
||||||
C_ADD(fout[k],f1k,scr[1]);
|
C_ADD(fout[k],f1k,scr[1]);
|
||||||
|
|
||||||
fout[k].r /= 2;
|
fout[k].r /= 2;
|
||||||
fout[k].i /= 2;
|
fout[k].i /= 2;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user