mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-06-04 01:28:23 -04:00
./bm_kiss_float -x 10000 -n 1800
improved from cputime=1.540 to cputime=1.490
This commit is contained in:
parent
2d66a61546
commit
8e00ca1877
17
kiss_fft.c
17
kiss_fft.c
@ -240,6 +240,7 @@ static void kf_bfly_generic(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
void kf_work(
|
void kf_work(
|
||||||
kiss_fft_cpx * Fout,
|
kiss_fft_cpx * Fout,
|
||||||
const kiss_fft_cpx * f,
|
const kiss_fft_cpx * f,
|
||||||
@ -249,18 +250,22 @@ void kf_work(
|
|||||||
const kiss_fft_state * st
|
const kiss_fft_state * st
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int m,p,q;
|
kiss_fft_cpx * tmpFout=Fout;
|
||||||
p=*factors++;
|
int m,p,r;
|
||||||
m=*factors++;
|
p=*factors++; /* the radix */
|
||||||
|
m=*factors++; /* stage's fft length/p */
|
||||||
|
|
||||||
for (q=0;q<p;++q) {
|
for (r=0;r<p;++r) {
|
||||||
if (m==1)
|
if (m==1)
|
||||||
Fout[q] = *f;
|
*Fout = *f;
|
||||||
else
|
else
|
||||||
kf_work( Fout + m*q, f, fstride*p, in_stride, factors,st);
|
kf_work( Fout , f, fstride*p, in_stride, factors,st);
|
||||||
|
Fout += m;
|
||||||
f += fstride*in_stride;
|
f += fstride*in_stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Fout=tmpFout;
|
||||||
|
|
||||||
switch (p) {
|
switch (p) {
|
||||||
case 2: kf_bfly2(Fout,fstride,st,m); break;
|
case 2: kf_bfly2(Fout,fstride,st,m); break;
|
||||||
case 3: kf_bfly3(Fout,fstride,st,m); break;
|
case 3: kf_bfly3(Fout,fstride,st,m); break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user