Eigen::internal::fftw_impl< Scalar_ > Struct Template Reference

#include <ei_fftw_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)
 

Protected Types

typedef fftw_plan< ScalarPlanData
 
typedef Eigen::numext::int64_t int64_t
 
typedef std::map< int64_t, PlanDataPlanMap
 

Protected Member Functions

PlanDataget_plan (int nfft, bool inverse, void *dst, const void *src)
 
PlanDataget_plan (int n0, int n1, bool inverse, void *dst, const void *src)
 

Protected Attributes

PlanMap m_plans
 

Member Typedef Documentation

◆ Complex

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

◆ int64_t

template<typename Scalar_ >
typedef Eigen::numext::int64_t Eigen::internal::fftw_impl< Scalar_ >::int64_t
protected

◆ PlanData

template<typename Scalar_ >
typedef fftw_plan<Scalar> Eigen::internal::fftw_impl< Scalar_ >::PlanData
protected

◆ PlanMap

template<typename Scalar_ >
typedef std::map<int64_t, PlanData> Eigen::internal::fftw_impl< Scalar_ >::PlanMap
protected

◆ Scalar

template<typename Scalar_ >
typedef Scalar_ Eigen::internal::fftw_impl< Scalar_ >::Scalar

Member Function Documentation

◆ clear()

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::clear ( )
inline
158 { m_plans.clear(); }
PlanMap m_plans
Definition: ei_fftw_impl.h:197

References Eigen::internal::fftw_impl< Scalar_ >::m_plans.

◆ fwd() [1/2]

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::fwd ( Complex dst,
const Complex src,
int  nfft 
)
inline
161  {
162  get_plan(nfft, false, dst, src).fwd(fftw_cast(dst), fftw_cast(src), nfft);
163  }
T * fftw_cast(const T *p)
Definition: ei_fftw_impl.h:28
PlanData & get_plan(int nfft, bool inverse, void *dst, const void *src)
Definition: ei_fftw_impl.h:199

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

◆ fwd() [2/2]

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::fwd ( Complex dst,
const Scalar src,
int  nfft 
)
inline
166  {
167  get_plan(nfft, false, dst, src).fwd(fftw_cast(dst), fftw_cast(src), nfft);
168  }

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

◆ fwd2()

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::fwd2 ( Complex dst,
const Complex src,
int  n0,
int  n1 
)
inline
171  {
172  get_plan(n0, n1, false, dst, src).fwd2(fftw_cast(dst), fftw_cast(src), n0, n1);
173  }

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

◆ get_plan() [1/2]

template<typename Scalar_ >
PlanData& Eigen::internal::fftw_impl< Scalar_ >::get_plan ( int  n0,
int  n1,
bool  inverse,
void *  dst,
const void *  src 
)
inlineprotected
206  {
207  bool inplace = (dst == src);
208  bool aligned = ((reinterpret_cast<size_t>(src) & 15) | (reinterpret_cast<size_t>(dst) & 15)) == 0;
209  int64_t key = (((((int64_t)n0) << 30) | (n1 << 3) | (inverse << 2) | (inplace << 1) | aligned) << 1) + 1;
210  return m_plans[key];
211  }
void inplace(bool square=false, bool SPD=false)
Definition: inplace_decomposition.cpp:18
void inverse(const MatrixType &m)
Definition: inverse.cpp:64
Eigen::numext::int64_t int64_t
Definition: ei_fftw_impl.h:193

References inplace(), inverse(), and Eigen::internal::fftw_impl< Scalar_ >::m_plans.

◆ get_plan() [2/2]

template<typename Scalar_ >
PlanData& Eigen::internal::fftw_impl< Scalar_ >::get_plan ( int  nfft,
bool  inverse,
void *  dst,
const void *  src 
)
inlineprotected
199  {
200  bool inplace = (dst == src);
201  bool aligned = ((reinterpret_cast<size_t>(src) & 15) | (reinterpret_cast<size_t>(dst) & 15)) == 0;
202  int64_t key = ((nfft << 3) | (inverse << 2) | (inplace << 1) | aligned) << 1;
203  return m_plans[key];
204  }

References inplace(), inverse(), and Eigen::internal::fftw_impl< Scalar_ >::m_plans.

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

◆ inv() [1/2]

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::inv ( Complex dst,
const Complex src,
int  nfft 
)
inline
176  {
177  get_plan(nfft, true, dst, src).inv(fftw_cast(dst), fftw_cast(src), nfft);
178  }

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

◆ inv() [2/2]

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::inv ( Scalar dst,
const Complex src,
int  nfft 
)
inline
181  {
182  get_plan(nfft, true, dst, src).inv(fftw_cast(dst), fftw_cast(src), nfft);
183  }

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

◆ inv2()

template<typename Scalar_ >
void Eigen::internal::fftw_impl< Scalar_ >::inv2 ( Complex dst,
const Complex src,
int  n0,
int  n1 
)
inline
186  {
187  get_plan(n0, n1, true, dst, src).inv2(fftw_cast(dst), fftw_cast(src), n0, n1);
188  }

References Eigen::internal::fftw_cast(), and Eigen::internal::fftw_impl< Scalar_ >::get_plan().

Member Data Documentation

◆ m_plans


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