Generative Fast Fourier Transforms (GFFT)
0.3
|
MAIN CLASS TO USE! Generates a set of transform classes. More...
#include <gfftgen.h>
Public Types | |
typedef ListGenerator< RevList, RevLenList, DefineTransform > ::Result | Result |
typedef Place::template Interface< typename T::ValueType >::Result | ObjectType |
Public Attributes | |
Loki::Factory< ObjectType, int_t, ObjectType *(*)(), TransformFactoryError > | factory |
NList | Typelist containing transform lengths |
T | type of data element |
TransType | type of transform: DFT, IDFT, RDFT, IRDFT |
Dim | dimension of transform, defined as SIntID<N>, N=1,2,... By now, only one-dimensional transforms are implemented. |
Parall | parallelization method |
Decimation | in-time or in-frequency: INTIME, INFREQ |
FactoryPolicy | policy used to create an object factory. Don't define it explicitely, if unsure |
This generator class makes possible to generate a set of necessary transforms. The first three template parameters: minimum and maximum power of two and value type must be defined. Further parameters have default values and may be omitted. Default values for template parameters are taken from the corresponding group-classes (see GFFT parameter groups ), from returned type Default. To specify another set of transforms than the default one, you have to specify every template parameter either as a Typelist or a single parameter class (see GFFT parameters ).
In the following example we define forward complex-valued set of transforms of the length from 2^10 to 2^15 using double precision:
The next example defines set of forward and backward real-valued transforms of single recision, where code for single and parallelized for two threads is generated:
You may use return type FullList of the group-classes to specify all types of a parameter. The next example returns forward and backward, complex- and real-valued transforms using double precision: