LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
ndarray
10.1+37
include
ndarray
fft
FourierTraits.h
Go to the documentation of this file.
1
// -*- c++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2008, 2009, 2010, 2011 LSST Corporation.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
#ifndef NDARRAY_FFT_FourierTraits_h_INCLUDED
24
#define NDARRAY_FFT_FourierTraits_h_INCLUDED
25
32
#include <complex>
33
#include <boost/shared_ptr.hpp>
34
35
#include "
ndarray/fft_fwd.h
"
36
37
namespace
ndarray {
39
namespace
detail {
40
45
template
<
typename
T,
bool
IsConst>
46
struct
FourierTraits {
47
BOOST_STATIC_ASSERT(
sizeof
(T) < 0);
48
};
49
51
52
template
<
typename
T>
53
struct
FourierTraits<T,false> {
54
typedef
T ElementX;
55
typedef
T ValueX;
56
typedef
std::complex<T> ElementK;
57
typedef
std::complex<T> ValueK;
58
59
static
inline
int
computeLastDimensionSize(
int
n) {
return
n/2 + 1; }
60
};
61
62
template
<
typename
T>
63
struct
FourierTraits<T,true> {
64
typedef
T ElementX;
65
typedef
typename
boost::remove_const<T>::type ValueX;
66
typedef
std::complex<ValueX> ValueK;
67
typedef
ValueK
const
ElementK;
68
69
static
inline
int
computeLastDimensionSize(
int
n) {
return
n/2 + 1; }
70
};
71
72
template
<
typename
U>
73
struct
FourierTraits<std::complex<U>,false> {
74
typedef
std::complex<U> ElementX;
75
typedef
std::complex<U> ElementK;
76
typedef
std::complex<U> ValueX;
77
typedef
std::complex<U> ValueK;
78
79
static
inline
int
computeLastDimensionSize(
int
n) {
return
n; }
80
};
81
82
template
<
typename
U>
83
struct
FourierTraits<std::complex<U> const,true> {
84
typedef
std::complex<U>
const
ElementX;
85
typedef
std::complex<U>
const
ElementK;
86
typedef
std::complex<U> ValueX;
87
typedef
std::complex<U> ValueK;
88
89
static
inline
int
computeLastDimensionSize(
int
n) {
return
n; }
90
};
91
93
94
}
// namespace detail
96
}
// namespace ndarray
97
98
#endif // !NDARRAY_FFT_FourierTraits_h_INCLUDED
fft_fwd.h
Forward declarations and default template parameters for ndarray/fft.
Generated on Thu Sep 24 2015 02:29:23 for LSSTApplications by
1.8.5