Eigen::internal::imklfft::imklfft_impl< Scalar_ > Struct Template Reference

#include <ei_imklfft_impl.h>

Public Types

typedef Scalar_ Scalar
 
typedef std::complex< ScalarComplex
 

Public Member Functions

void clear ()
 
void fwd (Complex *dst, const Complex *src, int nfft)
 
void fwd (Complex *dst, const Scalar *src, int nfft)
 
void fwd2 (Complex *dst, const Complex *src, int n0, int n1)
 
void inv (Complex *dst, const Complex *src, int nfft)
 
void inv (Scalar *dst, const Complex *src, int nfft)
 
void inv2 (Complex *dst, const Complex *src, int n0, int n1)
 

Private Member Functions

plan< Scalar > & get_plan (int nfft, void *dst, const void *src)
 
plan< Scalar > & get_plan (int n0, int n1, void *dst, const void *src)
 

Private Attributes

std::map< int64_t, plan< Scalar > > m_plans
 

Member Typedef Documentation

◆ Complex

template<typename Scalar_ >
typedef std::complex<Scalar> Eigen::internal::imklfft::imklfft_impl< Scalar_ >::Complex

◆ Scalar

template<typename Scalar_ >
typedef Scalar_ Eigen::internal::imklfft::imklfft_impl< Scalar_ >::Scalar

Member Function Documentation

◆ clear()

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::clear ( )
inline
186 { m_plans.clear(); }
std::map< int64_t, plan< Scalar > > m_plans
Definition: ei_imklfft_impl.h:223

References Eigen::internal::imklfft::imklfft_impl< Scalar_ >::m_plans.

◆ fwd() [1/2]

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::fwd ( Complex dst,
const Complex src,
int  nfft 
)
inline
189  {
190  MKL_LONG size = nfft;
191  get_plan(nfft, dst, src).forward(complex_cast(dst), complex_cast(src), size);
192  }
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
MKL_Complex16 * complex_cast(const std::complex< double > *p)
Definition: ei_imklfft_impl.h:26
plan< Scalar > & get_plan(int nfft, void *dst, const void *src)
Definition: ei_imklfft_impl.h:225

References Eigen::internal::imklfft::complex_cast(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan(), and size.

◆ fwd() [2/2]

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::fwd ( Complex dst,
const Scalar src,
int  nfft 
)
inline
195  {
196  MKL_LONG size = nfft;
197  get_plan(nfft, dst, src).forward(complex_cast(dst), const_cast<Scalar*>(src), nfft);
198  }
SCALAR Scalar
Definition: bench_gemm.cpp:45

References Eigen::internal::imklfft::complex_cast(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan(), and size.

◆ fwd2()

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::fwd2 ( Complex dst,
const Complex src,
int  n0,
int  n1 
)
inline
201  {
202  get_plan(n0, n1, dst, src).forward2(complex_cast(dst), complex_cast(src), n0, n1);
203  }

References Eigen::internal::imklfft::complex_cast(), and Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan().

◆ get_plan() [1/2]

template<typename Scalar_ >
plan<Scalar>& Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan ( int  n0,
int  n1,
void *  dst,
const void *  src 
)
inlineprivate
234  {
235  int inplace = (dst == src) ? 1 : 0;
236  int aligned = ((reinterpret_cast<size_t>(src) & 15) | (reinterpret_cast<size_t>(dst) & 15)) == 0 ? 1 : 0;
237  int64_t key = (((((int64_t)n0) << 31) | (n1 << 2) | (inplace << 1) | aligned) << 1) + 1;
238 
239  // Create element if key does not exist.
240  return m_plans[key];
241  }
void inplace(bool square=false, bool SPD=false)
Definition: inplace_decomposition.cpp:18
std::int64_t int64_t
Definition: Meta.h:43

References inplace(), and Eigen::internal::imklfft::imklfft_impl< Scalar_ >::m_plans.

◆ get_plan() [2/2]

template<typename Scalar_ >
plan<Scalar>& Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan ( int  nfft,
void *  dst,
const void *  src 
)
inlineprivate
225  {
226  int inplace = dst == src ? 1 : 0;
227  int aligned = ((reinterpret_cast<size_t>(src) & 15) | (reinterpret_cast<size_t>(dst) & 15)) == 0 ? 1 : 0;
228  int64_t key = ((nfft << 2) | (inplace << 1) | aligned) << 1;
229 
230  // Create element if key does not exist.
231  return m_plans[key];
232  }

References inplace(), and Eigen::internal::imklfft::imklfft_impl< Scalar_ >::m_plans.

Referenced by Eigen::internal::imklfft::imklfft_impl< Scalar_ >::fwd(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::fwd2(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::inv(), and Eigen::internal::imklfft::imklfft_impl< Scalar_ >::inv2().

◆ inv() [1/2]

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::inv ( Complex dst,
const Complex src,
int  nfft 
)
inline
206  {
207  MKL_LONG size = nfft;
208  get_plan(nfft, dst, src).inverse(complex_cast(dst), complex_cast(src), nfft);
209  }

References Eigen::internal::imklfft::complex_cast(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan(), and size.

◆ inv() [2/2]

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::inv ( Scalar dst,
const Complex src,
int  nfft 
)
inline
212  {
213  MKL_LONG size = nfft;
214  get_plan(nfft, dst, src).inverse(const_cast<Scalar*>(dst), complex_cast(src), nfft);
215  }

References Eigen::internal::imklfft::complex_cast(), Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan(), and size.

◆ inv2()

template<typename Scalar_ >
void Eigen::internal::imklfft::imklfft_impl< Scalar_ >::inv2 ( Complex dst,
const Complex src,
int  n0,
int  n1 
)
inline
218  {
219  get_plan(n0, n1, dst, src).inverse2(complex_cast(dst), complex_cast(src), n0, n1);
220  }

References Eigen::internal::imklfft::complex_cast(), and Eigen::internal::imklfft::imklfft_impl< Scalar_ >::get_plan().

Member Data Documentation

◆ m_plans


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