239{
241 const int p=*factors++;
242 const int m=*factors++;
244
245#ifdef _OPENMP
246
247
248 if (fstride==1 && p<=5)
249 {
250 int k;
251
252
253# pragma omp parallel for
254 for (k=0;k<p;++k)
255 kf_work( Fout +k*m, f+ fstride*in_stride*k,fstride*p,in_stride,factors,st);
256
257
258 switch (p) {
259 case 2:
kf_bfly2(Fout,fstride,st,m);
break;
260 case 3:
kf_bfly3(Fout,fstride,st,m);
break;
261 case 4:
kf_bfly4(Fout,fstride,st,m);
break;
262 case 5:
kf_bfly5(Fout,fstride,st,m);
break;
264 }
265 return;
266 }
267#endif
268
269 if (m==1) {
270 do{
271 *Fout = *f;
272 f += fstride*in_stride;
273 }while(++Fout != Fout_end );
274 }else{
275 do{
276
277
278
279
280
281
282
283
284
285 kf_work( Fout , f, fstride*p, in_stride, factors,st);
286 f += fstride*in_stride;
287 }while( (Fout += m) != Fout_end );
288 }
289
290 Fout=Fout_beg;
291
292
293 switch (p) {
294 case 2:
kf_bfly2(Fout,fstride,st,m);
break;
295 case 3:
kf_bfly3(Fout,fstride,st,m);
break;
296 case 4:
kf_bfly4(Fout,fstride,st,m);
break;
297 case 5:
kf_bfly5(Fout,fstride,st,m);
break;
299 }
300}
static void kf_bfly4(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, const size_t m)
static void kf_bfly2(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m)
static void kf_bfly_generic(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m, int p)
static void kf_bfly3(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, size_t m)
static void kf_work(kiss_fft_cpx *Fout, const kiss_fft_cpx *f, const size_t fstride, int in_stride, int *factors, const kiss_fft_cfg st)
static void kf_bfly5(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m)