Highly Efficient FFT for Exascale: HeFFTe v2.3
Collaboration diagram for Complex types:

Classes

struct  heffte::fft_output< scalar_type >
 Defines the relationship between pairs of input-output types in the FFT algorithms. More...
 
struct  heffte::fft_output< float >
 Specialization mapping float to std::complex<float>. More...
 
struct  heffte::fft_output< double >
 Specialization mapping double to std::complex<double>. More...
 
struct  heffte::transform_output< scalar_type, backend_tag, typename >
 Defines the relationship between pairs of input-output types in a general transform algorithm. More...
 
struct  heffte::transform_output< scalar_type, backend_tag, typename std::enable_if< backend::uses_fft_types< backend_tag >::value >::type >
 Specialization for standard FFT. More...
 
struct  heffte::transform_output< scalar_type, backend_tag, typename std::enable_if< not backend::uses_fft_types< backend_tag >::value >::type >
 Specialization for Cosine Transform. More...
 
struct  heffte::is_ccomplex< std::complex< float > >
 By default, HeFFTe recognizes std::complex<float>. More...
 
struct  heffte::is_zcomplex< std::complex< double > >
 By default, HeFFTe recognizes std::complex<double>. More...
 
struct  heffte::define_standard_type< typename, typename >
 Struct to specialize that returns the C++ equivalent of each type. More...
 
struct  heffte::define_standard_type< float, void >
 Type float is equivalent to float. More...
 
struct  heffte::define_standard_type< double, void >
 Type double is equivalent to double. More...
 
struct  heffte::define_standard_type< scalar_type, typename std::enable_if< is_ccomplex< scalar_type >::value >::type >
 Every type with specialization of heffte::is_ccomplex to std::true_type is equivalent to std::complex<float>. More...
 
struct  heffte::define_standard_type< scalar_type, typename std::enable_if< is_zcomplex< scalar_type >::value >::type >
 Every type with specialization of heffte::is_zcomplex to std::true_type is equivalent to std::complex<double>. More...
 

Functions

template<typename scalar_type >
define_standard_type< scalar_type >::type const * heffte::convert_to_standard (scalar_type const input[])
 Converts a const array of some type to a const array of the C++ equivalent type.
 

Detailed Description

By default, HeFFTe works with the C++ native std::complex types, by many backends and client codes favor their own complex types. While the types are binary compatible, i.e., arrays of one type can be safely converted with reinterpret_cast, having to manually make those conversions is far from user-friendly. Thus, HeFFTe also accepts the complex types defined by the enabled backend libraries, and the user can indicate their own custom complex types that are binary compatible with std::complex of single or double precision.

In addition, HeFFTe provides definition of the correct input and output types for different transforms, see also compatible types.