#include <vector>
#include <complex>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <Eigen/Core>
#include <unsupported/Eigen/FFT>
|
template<typename T > |
T | mag2 (T a) |
|
template<typename T > |
T | mag2 (std::complex< T > a) |
|
template<typename T > |
T | mag2 (const std::vector< T > &vec) |
|
template<typename T > |
T | mag2 (const std::vector< std::complex< T > > &vec) |
|
template<typename T > |
vector< T > | operator- (const vector< T > &a, const vector< T > &b) |
|
template<typename T > |
void | RandomFill (std::vector< T > &vec) |
|
template<typename T > |
void | RandomFill (std::vector< std::complex< T > > &vec) |
|
template<typename T_time , typename T_freq > |
void | fwd_inv (size_t nfft) |
|
template<typename T_scalar > |
void | two_demos (int nfft) |
|
void | demo_all_types (int nfft) |
|
int | main () |
|
◆ demo_all_types()
void demo_all_types |
( |
int |
nfft | ) |
|
89 cout <<
"nfft=" << nfft << endl;
90 cout <<
" float" << endl;
91 two_demos<float>(nfft);
92 cout <<
" double" << endl;
93 two_demos<double>(nfft);
94 cout <<
" long double" << endl;
95 two_demos<long double>(nfft);
Referenced by main().
◆ fwd_inv()
template<typename T_time , typename T_freq >
void fwd_inv |
( |
size_t |
nfft | ) |
|
66 vector<T_time> timebuf(nfft);
69 vector<T_freq> freqbuf;
70 static FFT<Scalar> fft;
71 fft.fwd(freqbuf, timebuf);
73 vector<T_time> timebuf2;
74 fft.inv(timebuf2, freqbuf);
76 T_time rmse =
mag2(timebuf - timebuf2) /
mag2(timebuf);
77 cout <<
"roundtrip rmse: " << rmse << endl;
SCALAR Scalar
Definition: bench_gemm.cpp:45
void RandomFill(std::vector< T > &vec)
Definition: doc/examples/FFT.cpp:53
T mag2(T a)
Definition: doc/examples/FFT.cpp:23
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
References mag2(), and RandomFill().
◆ mag2() [1/4]
template<typename T >
T mag2 |
( |
const std::vector< std::complex< T > > & |
vec | ) |
|
41 for (
size_t k = 0;
k < vec.size(); ++
k)
out +=
mag2(vec[
k]);
char char char int int * k
Definition: level2_impl.h:374
std::ofstream out("Result.txt")
References k, mag2(), and out().
◆ mag2() [2/4]
template<typename T >
T mag2 |
( |
const std::vector< T > & |
vec | ) |
|
◆ mag2() [3/4]
template<typename T >
T mag2 |
( |
std::complex< T > |
a | ) |
|
const Scalar * a
Definition: level2_cplx_impl.h:32
References a.
◆ mag2() [4/4]
◆ main()
void demo_all_types(int nfft)
Definition: doc/examples/FFT.cpp:88
References demo_all_types().
◆ operator-()
template<typename T >
vector<T> operator- |
( |
const vector< T > & |
a, |
|
|
const vector< T > & |
b |
|
) |
| |
48 for (
size_t k = 0;
k <
b.size(); ++
k)
c[
k] -=
b[
k];
Scalar * b
Definition: benchVecAdd.cpp:17
int c
Definition: calibrate.py:100
References a, b, calibrate::c, and k.
◆ RandomFill() [1/2]
template<typename T >
void RandomFill |
( |
std::vector< std::complex< T > > & |
vec | ) |
|
59 for (
size_t k = 0;
k < vec.size(); ++
k)
60 vec[
k] = std::complex<T>(
T(rand()) /
T(RAND_MAX) -
T(.5),
T(rand()) /
T(RAND_MAX) -
T(.5));
Eigen::Triplet< double > T
Definition: EigenUnitTest.cpp:11
References k.
◆ RandomFill() [2/2]
template<typename T >
void RandomFill |
( |
std::vector< T > & |
vec | ) |
|
54 for (
size_t k = 0;
k < vec.size(); ++
k) vec[
k] =
T(rand()) /
T(RAND_MAX) -
T(.5);
References k.
Referenced by fwd_inv().
◆ two_demos()
template<typename T_scalar >
void two_demos |
( |
int |
nfft | ) |
|
83 fwd_inv<T_scalar, std::complex<T_scalar> >(nfft);
85 fwd_inv<std::complex<T_scalar>, std::complex<T_scalar> >(nfft);