From e5400522430da40e678270f50a2c9eaa12fb8c1b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 2 Sep 2014 18:11:30 +0000 Subject: simplify fft, switch to assert by malloc --- fft.c | 49 +++++++++++++------------------------------------ 1 file changed, 13 insertions(+), 36 deletions(-) (limited to 'fft.c') diff --git a/fft.c b/fft.c index 55b35f4..12ef65c 100644 --- a/fft.c +++ b/fft.c @@ -15,7 +15,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include +#include #include #include #include @@ -37,8 +37,7 @@ hamming(size_t n) int i; w = calloc(n, sizeof(double)); - if (!w) - errx(1, "malloc failed"); + assert(w); for (i = 0; i < n; i++) w[i] = 0.54 - 0.46 * cos((2 * M_PI * i) / (n - 1)); @@ -46,44 +45,22 @@ hamming(size_t n) return w; } -static double * -resize(double *p, size_t n) -{ - if (p) - fftw_free(p); - p = fftw_malloc(n * sizeof(double)); - if (!p) - errx(1, "malloc failed"); - - return p; -} - -struct fft * -resize_fft(struct fft *p, size_t n) -{ - if (n != p->n) { - p->n = n; - - p->in = resize(p->in, p->n); - p->out = resize(p->out, p->n); - - if (p->window) - free(p->window); - p->window = hamming(p->n); - - p->plan = fftw_plan_r2r_1d(p->n, p->in, p->out, - FFTW_R2HC, FFTW_MEASURE); - } - return p; -} - struct fft * init_fft(size_t n) { struct fft *p; - p = calloc(1, sizeof(struct fft)); - p = resize_fft(p, n); + p = malloc(sizeof(struct fft)); + assert(p); + + p->n = n; + p->in = fftw_alloc_real(p->n); + p->out = fftw_alloc_real(p->n); + assert(p->in && p->out); + + p->window = hamming(p->n); + p->plan = fftw_plan_r2r_1d(p->n, p->in, p->out, + FFTW_R2HC, FFTW_MEASURE); return p; } -- cgit v1.2.3