11#ifndef NDARRAY_FFT_FourierTraits_h_INCLUDED
12#define NDARRAY_FFT_FourierTraits_h_INCLUDED
21#include <boost/shared_ptr.hpp>
33template <
typename T,
bool IsConst>
35 BOOST_STATIC_ASSERT(
sizeof(T) < 0);
41struct FourierTraits<T,false> {
44 typedef std::complex<T> ElementK;
45 typedef std::complex<T> ValueK;
47 static inline Size computeLastDimensionSize(Size n) {
return n/2 + 1; }
51struct FourierTraits<T,true> {
53 typedef typename boost::remove_const<T>::type ValueX;
54 typedef std::complex<ValueX> ValueK;
55 typedef ValueK
const ElementK;
57 static inline Size computeLastDimensionSize(Size n) {
return n/2 + 1; }
61struct FourierTraits<std::complex<U>,false> {
62 typedef std::complex<U> ElementX;
63 typedef std::complex<U> ElementK;
64 typedef std::complex<U> ValueX;
65 typedef std::complex<U> ValueK;
67 static inline Size computeLastDimensionSize(Size n) {
return n; }
71struct FourierTraits<std::complex<U> const,true> {
72 typedef std::complex<U>
const ElementX;
73 typedef std::complex<U>
const ElementK;
74 typedef std::complex<U> ValueX;
75 typedef std::complex<U> ValueK;
77 static inline Size computeLastDimensionSize(Size n) {
return n; }
Forward declarations and default template parameters for ndarray/fft.