From 22e709c024c85047b94b9a31cbdf0d2550606b2a Mon Sep 17 00:00:00 2001 From: Jukka Ojanen Date: Wed, 29 Oct 2014 15:34:58 +0200 Subject: Cleaning to make ISO C90 compatible --- include/ffts.h | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'include/ffts.h') diff --git a/include/ffts.h b/include/ffts.h index 63173bb..8e25cb4 100644 --- a/include/ffts.h +++ b/include/ffts.h @@ -1,7 +1,7 @@ /* - + This file is part of FFTS. - + Copyright (c) 2012, Anthony M. Blake All rights reserved. @@ -29,19 +29,18 @@ */ -#ifndef __FFTS_H__ -#define __FFTS_H__ +#ifndef FFTS_H +#define FFTS_H + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif -#include -#include -#include -#include #include #ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ +extern "C" { +#endif #define POSITIVE_SIGN 1 #define NEGATIVE_SIGN -1 @@ -53,20 +52,20 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign); ffts_plan_t *ffts_init_2d(size_t N1, size_t N2, int sign); ffts_plan_t *ffts_init_nd(int rank, size_t *Ns, int sign); -// For real transforms, sign == -1 implies a real-to-complex forwards tranform, -// and sign == 1 implies a complex-to-real backwards transform -// The output of a real-to-complex transform is N/2+1 complex numbers, where the -// redundant outputs have been omitted. +/* For real transforms, sign == -1 implies a real-to-complex forwards tranform, + and sign == 1 implies a complex-to-real backwards transform. + The output of a real-to-complex transform is N/2+1 complex numbers, + where the redundant outputs have been omitted. +*/ ffts_plan_t *ffts_init_1d_real(size_t N, int sign); ffts_plan_t *ffts_init_2d_real(size_t N1, size_t N2, int sign); ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign); -void ffts_execute(ffts_plan_t * , const void *input, void *output); -void ffts_free(ffts_plan_t *); +void ffts_execute(ffts_plan_t *p, const void *input, void *output); +void ffts_free(ffts_plan_t *p); #ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - +} #endif -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: + +#endif /* FFTS_H */ -- cgit v1.1 From ae1b59ddd07cb66b0807bc2c7c981ce96c69acea Mon Sep 17 00:00:00 2001 From: Jukka Ojanen Date: Mon, 30 Nov 2015 17:16:01 +0200 Subject: Enable building shared library and start version numbering from 0.9.0. On Windows when using FFTS as a DLL, define FFTS_SHARED. This is not mandatory, but it offers a little performance increase. Hide symbols when possible to improve compiler optimization and sizeof binary. Use CMake target alias "ffts" to choose between static and shared library, preferring static --- include/ffts.h | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'include/ffts.h') diff --git a/include/ffts.h b/include/ffts.h index 8e25cb4..d187e36 100644 --- a/include/ffts.h +++ b/include/ffts.h @@ -42,27 +42,54 @@ extern "C" { #endif +#if (defined(_WIN32) || defined(WIN32)) && defined(FFTS_SHARED) +# ifdef FFTS_BUILD +# define FFTS_API __declspec(dllexport) +# else +# define FFTS_API __declspec(dllimport) +# endif +#else +# if (__GNUC__ >= 4) || defined(HAVE_GCC_VISIBILITY) +# define FFTS_API __attribute__ ((visibility("default"))) +# else +# define FFTS_API +# endif +#endif + #define POSITIVE_SIGN 1 #define NEGATIVE_SIGN -1 struct _ffts_plan_t; typedef struct _ffts_plan_t ffts_plan_t; -ffts_plan_t *ffts_init_1d(size_t N, int sign); -ffts_plan_t *ffts_init_2d(size_t N1, size_t N2, int sign); -ffts_plan_t *ffts_init_nd(int rank, size_t *Ns, int sign); +FFTS_API ffts_plan_t* +ffts_init_1d(size_t N, int sign); + +FFTS_API ffts_plan_t* +ffts_init_2d(size_t N1, size_t N2, int sign); + +FFTS_API ffts_plan_t* +ffts_init_nd(int rank, size_t *Ns, int sign); /* For real transforms, sign == -1 implies a real-to-complex forwards tranform, and sign == 1 implies a complex-to-real backwards transform. The output of a real-to-complex transform is N/2+1 complex numbers, where the redundant outputs have been omitted. */ -ffts_plan_t *ffts_init_1d_real(size_t N, int sign); -ffts_plan_t *ffts_init_2d_real(size_t N1, size_t N2, int sign); -ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign); +FFTS_API ffts_plan_t* +ffts_init_1d_real(size_t N, int sign); + +FFTS_API ffts_plan_t* +ffts_init_2d_real(size_t N1, size_t N2, int sign); + +FFTS_API ffts_plan_t* +ffts_init_nd_real(int rank, size_t *Ns, int sign); + +FFTS_API void +ffts_execute(ffts_plan_t *p, const void *input, void *output); -void ffts_execute(ffts_plan_t *p, const void *input, void *output); -void ffts_free(ffts_plan_t *p); +FFTS_API void +ffts_free(ffts_plan_t *p); #ifdef __cplusplus } -- cgit v1.1 From 52c7d506e13dca5c92692e95aba5dfa678b2acb0 Mon Sep 17 00:00:00 2001 From: Jukka Ojanen Date: Tue, 5 Apr 2016 14:44:51 +0300 Subject: Add notes about data layout to ffts.h --- include/ffts.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'include/ffts.h') diff --git a/include/ffts.h b/include/ffts.h index d187e36..cc85a88 100644 --- a/include/ffts.h +++ b/include/ffts.h @@ -56,12 +56,22 @@ extern "C" { # endif #endif -#define POSITIVE_SIGN 1 -#define NEGATIVE_SIGN -1 +/* The direction of the transform + (i.e, the sign of the exponent in the transform.) +*/ +#define FFTS_FORWARD (-1) +#define FFTS_BACKWARD (+1) struct _ffts_plan_t; typedef struct _ffts_plan_t ffts_plan_t; +/* Complex data is stored in the interleaved format + (i.e, the real and imaginary parts composing each + element of complex data are stored adjacently in memory) + + The multi-dimensional arrays passed are expected to be + stored as a single contiguous block in row-major order +*/ FFTS_API ffts_plan_t* ffts_init_1d(size_t N, int sign); @@ -71,8 +81,10 @@ ffts_init_2d(size_t N1, size_t N2, int sign); FFTS_API ffts_plan_t* ffts_init_nd(int rank, size_t *Ns, int sign); -/* For real transforms, sign == -1 implies a real-to-complex forwards tranform, - and sign == 1 implies a complex-to-real backwards transform. +/* For real transforms, sign == FFTS_FORWARD implies a real-to-complex + forwards tranform, and sign == FFTS_BACKWARD implies a complex-to-real + backwards transform. + The output of a real-to-complex transform is N/2+1 complex numbers, where the redundant outputs have been omitted. */ -- cgit v1.1