From ccb1a5cf6a0db766ef85e59f40a8431fb15b8acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Tue, 22 Jul 2008 14:07:12 +0000 Subject: fixing bugs... svn path=/trunk/externals/iem/iemmatrix/; revision=10204 --- src/mtx_rifft.c | 89 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 45 deletions(-) (limited to 'src/mtx_rifft.c') diff --git a/src/mtx_rifft.c b/src/mtx_rifft.c index d10fc28..94ba86c 100644 --- a/src/mtx_rifft.c +++ b/src/mtx_rifft.c @@ -15,13 +15,13 @@ #include "iemmatrix.h" #include -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H #include #endif static t_class *mtx_rifft_class; -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H enum ComplexPart { REALPART=0, IMAGPART=1}; #endif @@ -33,7 +33,7 @@ typedef struct _MTXRifft_ int columns_re; int size; int size2; -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H fftw_plan *fftplan; fftw_complex *f_in; double *f_out; @@ -91,7 +91,7 @@ static void ifftPrepareReal (int n, t_float *re, t_float *im) *++re = -*--im; } -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H static void readFFTWComplexPartFromList (int n, t_atom *l, fftw_complex *f, enum ComplexPart p) { for (;n--;f++, l++) @@ -114,9 +114,9 @@ static void *newMTXRifft (t_symbol *s, int argc, t_atom *argv) static void mTXRifftMatrixCold (MTXRifft *x, t_symbol *s, - int argc, t_atom *argv) + int argc, t_atom *argv) { - int rows = atom_getint (argv++); + int rows = atom_getint (argv++); int columns_re = atom_getint (argv++); int in_size = argc-2; int columns = (columns_re-1)<<1; @@ -124,7 +124,7 @@ static void mTXRifftMatrixCold (MTXRifft *x, t_symbol *s, int size = rows * columns; int ifft_count; t_atom *list_re = x->list_re; -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H fftw_complex *f_in = x->f_in; double *f_out = x->f_out; #else @@ -144,24 +144,24 @@ static void mTXRifftMatrixCold (MTXRifft *x, t_symbol *s, else if (columns == (1 << ilog2(columns))) { /* memory things */ -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H if ((x->rows!=rows)||(columns!=x->columns)){ - for (ifft_count=0;ifft_countfftplan[ifft_count]); - } - x->fftplan=(fftw_plan*)realloc(x->fftplan,sizeof(fftw_plan)*rows); - f_in=(fftw_complex*)realloc(f_in,sizeof(fftw_complex)*size2); - f_out=(double*)realloc(f_out,sizeof(double)*size); - x->f_out = f_out; - x->f_in = f_in; - for (ifft_count=0;ifft_countfftplan[ifft_count]=fftw_plan_dft_c2r_1d(columns,f_in,f_out,FFTW_ESTIMATE); - f_out+=columns; - f_in+=columns_re; - } - f_in=x->f_in; - f_out=x->f_out; - } + for (ifft_count=0;ifft_countrows;ifft_count++) { + fftw_destroy_plan(x->fftplan[ifft_count]); + } + x->fftplan=(fftw_plan*)realloc(x->fftplan,sizeof(fftw_plan)*rows); + f_in=(fftw_complex*)realloc(f_in,sizeof(fftw_complex)*size2); + f_out=(double*)realloc(f_out,sizeof(double)*size); + x->f_out = f_out; + x->f_in = f_in; + for (ifft_count=0;ifft_countfftplan[ifft_count]=fftw_plan_dft_c2r_1d(columns,f_in,f_out,FFTW_ESTIMATE); + f_out+=columns; + f_in+=columns_re; + } + f_in=x->f_in; + f_out=x->f_out; + } #else f_re=(t_float*)realloc(f_re, sizeof(t_float)*size); f_im=(t_float*)realloc(f_im, sizeof(t_float)*size); @@ -179,11 +179,11 @@ static void mTXRifftMatrixCold (MTXRifft *x, t_symbol *s, /* main part: reading imaginary part */ ifft_count = rows; -#ifndef DHAVE_FFTW3 +#ifndef HAVE_FFTW3_H x->renorm_fac = 1.0f / columns; #endif while (ifft_count--) { -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H readFFTWComplexPartFromList(columns_re, argv, f_in, IMAGPART); f_in += columns_re; #else @@ -199,7 +199,7 @@ static void mTXRifftMatrixCold (MTXRifft *x, t_symbol *s, } static void mTXRifftMatrixHot (MTXRifft *x, t_symbol *s, - int argc, t_atom *argv) + int argc, t_atom *argv) { int rows = atom_getint (argv++); int columns_re = atom_getint (argv++); @@ -208,7 +208,7 @@ static void mTXRifftMatrixHot (MTXRifft *x, t_symbol *s, int in_size = argc-2; int size2 = x->size2; int ifft_count; -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H fftw_complex *f_in = x->f_in; double *f_out = x->f_out; #else @@ -227,9 +227,9 @@ static void mTXRifftMatrixHot (MTXRifft *x, t_symbol *s, post("mtx_rifft: invalid right side matrix"); else { /* main part */ for (ifft_count=0;ifft_countfftw_execute[ifft_count]); + fftw_execute(x->fftplan[ifft_count]); f_in+=columns_re; #else readFloatFromList (columns_re, argv, f_re); @@ -241,18 +241,17 @@ static void mTXRifftMatrixHot (MTXRifft *x, t_symbol *s, #endif argv += columns_re; } -#ifndef DHAVE_FFTW3 +#ifndef HAVE_FFTW3_H f_re = x->f_re; #endif size2 = x->size2; - SETSYMBOL(x->list_re, gensym("matrix")); SETFLOAT(x->list_re, rows); SETFLOAT(x->list_re+1, x->columns); -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H writeDoubleIntoList (size, x->list_re+2, f_out); #else - writeFloatIntoList (size, x->list_re+2, f_re); + writeFloatIntoList (size, x->list_re+2, f_re); #endif outlet_anything(x->list_re_out, gensym("matrix"), size+2, x->list_re); } @@ -262,33 +261,33 @@ static void mTXRifftBang (MTXRifft *x) { if (x->list_re) outlet_anything(x->list_re_out, gensym("matrix"), - x->size+2, x->list_re); + x->size+2, x->list_re); } static void deleteMTXRifft (MTXRifft *x) { -#ifdef DHAVE_FFTW3 +#ifdef HAVE_FFTW3_H int n; if (x->fftplan) { - for (n=0; nrows; n++) - fftw_destroy_plan(x->fftplan[n]); - free(x->fftplan); + for (n=0; nrows; n++) + fftw_destroy_plan(x->fftplan[n]); + free(x->fftplan); } if (x->f_out) - free(x->f_out); + free(x->f_out); if (x->f_in) - free(x->f_in); + free(x->f_in); #else if (x->f_re) - free(x->f_re); + free(x->f_re); if (x->f_im) - free(x->f_im); + free(x->f_im); #endif if (x->list_re) - free(x->list_re); + free(x->list_re); if (x->list_im) - free(x->list_im); + free(x->list_im); } static void mtx_rifft_setup (void) -- cgit v1.2.1