54 typedef typename std::complex<Scalar>
Complex;
55 int nits =
NDATA / nfft;
56 vector<T> inbuf(nfft);
57 vector<Complex> outbuf(nfft);
61 fft.SetFlag(fft.Unscaled);
65 fft.SetFlag(fft.HalfSpectrum);
69 std::fill(inbuf.begin(), inbuf.end(), 0);
70 fft.fwd(outbuf, inbuf);
74 for (
int k = 0;
k < 8; ++
k) {
77 for (
int i = 0;
i < nits;
i++) fft.fwd(outbuf, inbuf);
79 for (
int i = 0;
i < nits;
i++) fft.inv(inbuf, outbuf);
83 cout << nameof<Scalar>() <<
" ";
84 double mflops = 5. * nfft *
log2((
double)nfft) / (1e6 *
timer.value() / (
double)nits);
97 cout <<
" NFFT=" << nfft <<
" " << (
double(1
e-6 * nfft * nits) /
timer.value()) <<
" MS/s " << mflops <<
"MFLOPS\n";
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define NDATA
Definition: benchFFT.cpp:46
SCALAR Scalar
Definition: bench_gemm.cpp:45
Definition: BenchTimer.h:55
std::complex< RealScalar > Complex
Definition: common.h:71
char char char int int * k
Definition: level2_impl.h:374
double timer
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:210
Scalar log2(Scalar x)
Definition: packetmath.cpp:754
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217