17 static void fft(
const Eigen::Tensor<dcomplex,3>& in, Eigen::Tensor<dcomplex,3>& out)
20 Eigen::FFT<double>
fft;
21 for (
int k = 0; k < in.dimension(0); k++)
23 for (
int l = 0; l < in.dimension(1); l++)
25 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(2));
26 tmpOutVector.setZero();
27 FFT::fft(in.chip(k,0).chip(l,0),tmpOutVector);
28 out.chip(k,0).chip(l,0)= tmpOutVector;
32 for (
int k = 0; k < in.dimension(1); k++)
34 for (
int l = 0; l < in.dimension(2); l++)
36 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(0));
37 tmpOutVector.setZero();
38 FFT::fft(out.chip(k,1).chip(l,1),tmpOutVector);
39 out.chip(k,1).chip(l,1)= tmpOutVector;
43 for (
int k = 0; k < in.dimension(0); k++)
45 for (
int l = 0; l < in.dimension(2); l++)
47 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(0));
48 tmpOutVector.setZero();
49 FFT::fft(out.chip(k,0).chip(l,1),tmpOutVector);
50 out.chip(k,0).chip(l,1)= tmpOutVector;
54 static void ifft(
const Eigen::Tensor<dcomplex,3>& in, Eigen::Tensor<dcomplex,3>& out)
57 Eigen::FFT<double>
fft;
58 for (
int k = 0; k < in.dimension(0); k++)
60 for (
int l = 0; l < in.dimension(1); l++)
62 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(2));
63 tmpOutVector.setZero();
64 FFT::ifft(in.chip(k,0).chip(l,0),tmpOutVector);
65 out.chip(k,0).chip(l,0)= tmpOutVector;
69 for (
int k = 0; k < in.dimension(1); k++)
71 for (
int l = 0; l < in.dimension(2); l++)
73 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(0));
74 tmpOutVector.setZero();
75 FFT::ifft(out.chip(k,1).chip(l,1),tmpOutVector);
76 out.chip(k,1).chip(l,1)= tmpOutVector;
80 for (
int k = 0; k < in.dimension(0); k++)
82 for (
int l = 0; l < in.dimension(2); l++)
84 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(0));
85 tmpOutVector.setZero();
86 FFT::ifft(out.chip(k,0).chip(l,1),tmpOutVector);
87 out.chip(k,0).chip(l,1)= tmpOutVector;
93 static void fft(
const Eigen::Tensor<dcomplex,2>& in, Eigen::Tensor<dcomplex,2>& out)
96 Eigen::FFT<double>
fft;
98 for (
int k = 0; k < in.dimension(0); k++) {
99 Eigen::Tensor<dcomplex,1> tmpOutVector;
100 tmpOutVector.setZero();
101 FFT::fft(in.chip(k,0),tmpOutVector);
102 out.chip(k,0)= tmpOutVector;
105 for (
int k = 0; k < in.dimension(1); k++) {
106 Eigen::Tensor<dcomplex,1> tmpOutVector;
107 tmpOutVector.setZero();
108 FFT::fft(out.chip(k,1),tmpOutVector);
109 out.chip(k,1)= tmpOutVector;
112 static void ifft(
const Eigen::Tensor<dcomplex,2>& in, Eigen::Tensor<dcomplex,2>& out)
115 Eigen::FFT<double>
fft;
116 for (
int k = 0; k < in.dimension(0); k++) {
117 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(1));
118 tmpOutVector.setZero();
120 out.chip(k,0)= tmpOutVector;
123 for (
int k = 0; k < in.dimension(1); k++) {
124 Eigen::Tensor<dcomplex,1> tmpOutVector(in.dimension(0));
125 tmpOutVector.setZero();
127 out.chip(k,1)= tmpOutVector;
132 static void fft(
const Eigen::Tensor<dcomplex,1>& in, Eigen::Tensor<dcomplex,1>& out)
135 Eigen::FFT<double>
fft;
136 Eigen::Map<const Eigen::VectorXcd> inMap(in.data(), in.dimension(0));
138 Eigen::VectorXcd tmpOut(in.dimension(0));
140 fft.fwd(tmpOut,inMap.eval());
142 Eigen::TensorMap<Eigen::Tensor<dcomplex,1>> tmpOutMap(tmpOut.data(),tmpOut.size());
145 static void ifft(
const Eigen::Tensor<dcomplex,1>& in, Eigen::Tensor<dcomplex,1>& out)
148 Eigen::FFT<double>
fft;
149 Eigen::Map<const Eigen::VectorXcd> inMap(in.data(), in.dimension(0));
151 Eigen::VectorXcd tmpOut(in.dimension(0));
153 fft.inv(tmpOut,inMap.eval());
155 Eigen::TensorMap<Eigen::Tensor<dcomplex,1>> tmpOutMap(tmpOut.data(),tmpOut.size());