Generative Fast Fourier Transforms (GFFT)  0.3
Public Types | Public Member Functions | Public Attributes | List of all members
GFFT::GenerateTransform< NList, T, TransType, Dim, Parall, Place > Class Template Reference

MAIN CLASS TO USE! Generates a set of transform classes. More...

#include <gfftgen.h>

Public Types

typedef ListGenerator< RevList,
RevLenList, DefineTransform >
typedef Place::template
Interface< typename
T::ValueType >::Result 

Public Member Functions

ObjectType * CreateTransformObject (int_t n, int_t vtype_id, int_t trans_id=TransformTypeGroup::Default::ID, int_t dim=1, int_t parall_id=ParallelizationGroup::Default::ID, int_t decim_id=DecimationGroup::Default::ID)

Public Attributes

Loki::Factory< ObjectType,
int_t, ObjectType
*(*)(), TransformFactoryError > 

Detailed Description

template<class NList, class T, class TransType = TransformTypeGroup::Default, class Dim = SIntID<1>, class Parall = ParallelizationGroup::Default, class Place = PlaceGroup::Default>
class GFFT::GenerateTransform< NList, T, TransType, Dim, Parall, Place >

Template Parameters
NListTypelist containing transform lengths
Ttype of data element
TransTypetype of transform: DFT, IDFT, RDFT, IRDFT
Dimdimension of transform, defined as SIntID<N>, N=1,2,... By now, only one-dimensional transforms are implemented.
Parallparallelization method
Decimationin-time or in-frequency: INTIME, INFREQ
FactoryPolicypolicy 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:

typedef GenerateTransform<10, 15, GFFT::DOUBLE, GFFT::DFT> TransformSet;

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:

typedef TYPELIST_2(GFFT::RDFT, GFFT::IRDFT) RealTransforms;
typedef TYPELIST_2(GFFT::Serial, GFFT::OpenMP<2>) ParallSet;
typedef GenerateTransform<10, 15, GFFT::FLOAT, RealTransforms, SIntID<1>, ParallSet> TransformSet;

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:

typedef GenerateTransform<10, 15, GFFT::DOUBLE, GFFT::TransformTypeGroup::FullList> TransformSet;
See Also
Transform, ListGenerator

The documentation for this class was generated from the following file:

Generated on Mon Feb 10 2014 for Generative Fast Fourier Transforms (GFFT) by DoxyGen