diff options
author | Anthony Blake <anthonix@me.com> | 2012-10-31 15:44:51 +1300 |
---|---|---|
committer | Anthony Blake <anthonix@me.com> | 2012-10-31 15:44:51 +1300 |
commit | a6f60ef7f723745bd20e8a70f18fe1964c077714 (patch) | |
tree | d416ae7575088fa91ef3b472b59824c177123cdf | |
parent | cdd3a3a385f9539e85dec17bd84ec81ab8eb7e21 (diff) | |
download | ffts-a6f60ef7f723745bd20e8a70f18fe1964c077714.zip ffts-a6f60ef7f723745bd20e8a70f18fe1964c077714.tar.gz |
Initial multi-dimensional structure
-rw-r--r-- | src/ffts.c | 10 | ||||
-rw-r--r-- | src/ffts.h | 3 | ||||
-rw-r--r-- | src/ffts_nd.c | 66 | ||||
-rw-r--r-- | src/ffts_nd.h | 43 |
4 files changed, 119 insertions, 3 deletions
@@ -46,12 +46,16 @@ #else #endif -void ffts_execute(ffts_plan_t *p, const void * restrict in, void * restrict out) { - transform_index_t *ps = p->transforms; +void ffts_execute(ffts_plan_t *p, const void * in, void * out) { p->transform(p, (const float *)in, (float *)out); } void ffts_free(ffts_plan_t *p) { + p->destroy(p); +} + + +void ffts_free_1d(ffts_plan_t *p) { size_t i; @@ -90,7 +94,7 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign) { p->is = NULL; p->ws = NULL; p->offsets = NULL; - + p->destroy = ffts_free_1d; if(N >= 32) { ffts_init_offsets(p, N, leafN); @@ -78,6 +78,9 @@ struct _ffts_plan_t { struct _ffts_plan_t *plans; int rank; size_t *Ns; + + void (*destroy)(struct _ffts_plan_t *); + }; typedef struct _ffts_plan_t ffts_plan_t; diff --git a/src/ffts_nd.c b/src/ffts_nd.c new file mode 100644 index 0000000..51915aa --- /dev/null +++ b/src/ffts_nd.c @@ -0,0 +1,66 @@ +/* + + This file is part of FFTS -- The Fastest Fourier Transform in the South + + Copyright (c) 2012, Anthony M. Blake <amb@anthonix.com> + Copyright (c) 2012, The University of Waikato + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the organization nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "ffts_nd.h" + + +void ffts_free_nd(ffts_plan_t *p) { + free(p->Ns); + +} + +void ffts_execute_nd(ffts_plan_t *p, const void * in, void * out) { + +} + +ffts_plan_t *ffts_init_nd(int rank, size_t *Ns, int sign) { + ffts_plan_t *p = malloc(sizeof(ffts_plan_t)); + + p->transform = ffts_execute_nd; + p->destroy = ffts_free_nd; + + p->rank = rank; + + p->Ns = malloc(sizeof(size_t) * rank); + + + return p; +} + + +ffts_plan_t *ffts_init_2d(size_t N1, size_t N2, int sign) { + size_t Ns[2]; + Ns[0] = N1; + Ns[1] = N2; + return ffts_init_nd(2, Ns, sign); +} diff --git a/src/ffts_nd.h b/src/ffts_nd.h new file mode 100644 index 0000000..3d3abd9 --- /dev/null +++ b/src/ffts_nd.h @@ -0,0 +1,43 @@ +/* + + This file is part of FFTS -- The Fastest Fourier Transform in the South + + Copyright (c) 2012, Anthony M. Blake <amb@anthonix.com> + Copyright (c) 2012, The University of Waikato + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the organization nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef __FFTS_ND_H__ +#define __FFTS_ND_H__ + +#include "ffts.h" + + + + +#endif + |