summaryrefslogtreecommitdiffhomepage
path: root/eigen/bench/benchFFT.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2019-03-03 21:09:10 +0100
committerStanislaw Halik <sthalik@misaki.pl>2019-03-03 21:10:13 +0100
commitf0238cfb6997c4acfc2bd200de7295f3fa36968f (patch)
treeb215183760e4f615b9c1dabc1f116383b72a1b55 /eigen/bench/benchFFT.cpp
parent543edd372a5193d04b3de9f23c176ab439e51b31 (diff)
don't index Eigen
Diffstat (limited to 'eigen/bench/benchFFT.cpp')
-rw-r--r--eigen/bench/benchFFT.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/eigen/bench/benchFFT.cpp b/eigen/bench/benchFFT.cpp
deleted file mode 100644
index 3eb1a1a..0000000
--- a/eigen/bench/benchFFT.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2009 Mark Borgerding mark a borgerding net
-//
-// This Source Code Form is subject to the terms of the Mozilla
-// Public License v. 2.0. If a copy of the MPL was not distributed
-// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-#include <iostream>
-
-#include <bench/BenchUtil.h>
-#include <complex>
-#include <vector>
-#include <Eigen/Core>
-
-#include <unsupported/Eigen/FFT>
-
-using namespace Eigen;
-using namespace std;
-
-
-template <typename T>
-string nameof();
-
-template <> string nameof<float>() {return "float";}
-template <> string nameof<double>() {return "double";}
-template <> string nameof<long double>() {return "long double";}
-
-#ifndef TYPE
-#define TYPE float
-#endif
-
-#ifndef NFFT
-#define NFFT 1024
-#endif
-#ifndef NDATA
-#define NDATA 1000000
-#endif
-
-using namespace Eigen;
-
-template <typename T>
-void bench(int nfft,bool fwd,bool unscaled=false, bool halfspec=false)
-{
- typedef typename NumTraits<T>::Real Scalar;
- typedef typename std::complex<Scalar> Complex;
- int nits = NDATA/nfft;
- vector<T> inbuf(nfft);
- vector<Complex > outbuf(nfft);
- FFT< Scalar > fft;
-
- if (unscaled) {
- fft.SetFlag(fft.Unscaled);
- cout << "unscaled ";
- }
- if (halfspec) {
- fft.SetFlag(fft.HalfSpectrum);
- cout << "halfspec ";
- }
-
-
- std::fill(inbuf.begin(),inbuf.end(),0);
- fft.fwd( outbuf , inbuf);
-
- BenchTimer timer;
- timer.reset();
- for (int k=0;k<8;++k) {
- timer.start();
- if (fwd)
- for(int i = 0; i < nits; i++)
- fft.fwd( outbuf , inbuf);
- else
- for(int i = 0; i < nits; i++)
- fft.inv(inbuf,outbuf);
- timer.stop();
- }
-
- cout << nameof<Scalar>() << " ";
- double mflops = 5.*nfft*log2((double)nfft) / (1e6 * timer.value() / (double)nits );
- if ( NumTraits<T>::IsComplex ) {
- cout << "complex";
- }else{
- cout << "real ";
- mflops /= 2;
- }
-
-
- if (fwd)
- cout << " fwd";
- else
- cout << " inv";
-
- cout << " NFFT=" << nfft << " " << (double(1e-6*nfft*nits)/timer.value()) << " MS/s " << mflops << "MFLOPS\n";
-}
-
-int main(int argc,char ** argv)
-{
- bench<complex<float> >(NFFT,true);
- bench<complex<float> >(NFFT,false);
- bench<float>(NFFT,true);
- bench<float>(NFFT,false);
- bench<float>(NFFT,false,true);
- bench<float>(NFFT,false,true,true);
-
- bench<complex<double> >(NFFT,true);
- bench<complex<double> >(NFFT,false);
- bench<double>(NFFT,true);
- bench<double>(NFFT,false);
- bench<complex<long double> >(NFFT,true);
- bench<complex<long double> >(NFFT,false);
- bench<long double>(NFFT,true);
- bench<long double>(NFFT,false);
- return 0;
-}