aboutsummaryrefslogtreecommitdiff
path: root/src/mtx_rifft.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2008-07-22 14:07:12 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2008-07-22 14:07:12 +0000
commitccb1a5cf6a0db766ef85e59f40a8431fb15b8acc (patch)
tree905bdde27b53045cd9c10e0f94932305d27826a3 /src/mtx_rifft.c
parent1a645b8807a2e55372a02ec50d71a8134968626d (diff)
fixing bugs...
svn path=/trunk/externals/iem/iemmatrix/; revision=10204
Diffstat (limited to 'src/mtx_rifft.c')
-rw-r--r--src/mtx_rifft.c89
1 files changed, 44 insertions, 45 deletions
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 <stdlib.h>
-#ifdef DHAVE_FFTW3
+#ifdef HAVE_FFTW3_H
#include <fftw3.h>
#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_count<rows;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_count<rows;ifft_count++) {
- x->fftplan[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_count<x->rows;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_count<rows;ifft_count++) {
+ x->fftplan[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_count<rows;ifft_count++){
-#ifdef DHAVE_FFTW3
+#ifdef HAVE_FFTW3_H
readFFTWComplexPartFromList(columns_re,argv,f_in,REALPART);
- fftw_execute(x->fftw_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; n<x->rows; n++)
- fftw_destroy_plan(x->fftplan[n]);
- free(x->fftplan);
+ for (n=0; n<x->rows; 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)