fix for inplace odd rank multi-dimensional ffts

This commit is contained in:
Mark Borgerding
2004-02-02 01:49:08 +00:00
parent 490a602472
commit 1d58b0eced
2 changed files with 10 additions and 9 deletions

View File

@ -146,15 +146,19 @@ void kiss_fftnd(void * cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
kiss_fft_cpx * bufout;
/*arrange it so the last bufout == fout*/
if ( st->ndims & 1 )
if ( st->ndims & 1 ) {
bufout = fout;
else
if (fin==fout) {
memcpy( st->tmpbuf, fin, sizeof(kiss_fft_cpx) * st->dimprod );
bufin = st->tmpbuf;
}
}else
bufout = st->tmpbuf;
for ( k=0; k < st->ndims; ++k) {
int curdim = st->dims[k];
int stride = st->dimprod / curdim;
for ( i=0 ; i<stride ; ++i )
kiss_fft_stride( st->states[k], bufin+i , bufout+i*curdim, stride );