39 int saRepeats = stdRepeats * 4;
45 SquareMatrixType covMat =
a *
a.adjoint();
50 int r = internal::random<int>(0, covMat.rows() - 1);
51 int c = internal::random<int>(0, covMat.cols() - 1);
56 for (
int k = 0;
k < saRepeats; ++
k) {
58 acc += ei.eigenvectors().coeff(
r,
c);
68 for (
int k = 0;
k < stdRepeats; ++
k) {
70 acc += ei.eigenvectors().coeff(
r,
c);
76 if (MatrixType::RowsAtCompileTime ==
Dynamic)
79 std::cout <<
"fixed ";
80 std::cout << covMat.rows() <<
" \t" << timerSa.
value() *
REPEAT / saRepeats <<
"s \t"
84 if (MatrixType::RowsAtCompileTime ==
Dynamic) {
88 gmm::dense_matrix<Scalar> gmmCovMat(covMat.rows(), covMat.cols());
89 gmm::dense_matrix<Scalar> eigvect(covMat.rows(), covMat.cols());
90 std::vector<Scalar> eigval(covMat.rows());
94 for (
int k = 0;
k < saRepeats; ++
k) {
95 gmm::symmetric_qr_algorithm(gmmCovMat, eigval, eigvect);
112 std::cout <<
" | \t" << timerSa.
value() *
REPEAT / saRepeats <<
"s"
118 if (MatrixType::RowsAtCompileTime ==
Dynamic) {
122 gsl_matrix* gslCovMat = gsl_matrix_alloc(covMat.rows(), covMat.cols());
123 gsl_matrix* gslCopy = gsl_matrix_alloc(covMat.rows(), covMat.cols());
124 gsl_matrix* eigvect = gsl_matrix_alloc(covMat.rows(), covMat.cols());
125 gsl_vector* eigval = gsl_vector_alloc(covMat.rows());
126 gsl_eigen_symmv_workspace* eisymm = gsl_eigen_symmv_alloc(covMat.rows());
128 gsl_matrix_complex* eigvectz = gsl_matrix_complex_alloc(covMat.rows(), covMat.cols());
129 gsl_vector_complex* eigvalz = gsl_vector_complex_alloc(covMat.rows());
130 gsl_eigen_nonsymmv_workspace* einonsymm = gsl_eigen_nonsymmv_alloc(covMat.rows());
132 eiToGsl(covMat, &gslCovMat);
135 for (
int k = 0;
k < saRepeats; ++
k) {
136 gsl_matrix_memcpy(gslCopy, gslCovMat);
137 gsl_eigen_symmv(gslCopy, eigval, eigvect, eisymm);
138 acc += gsl_matrix_get(eigvect,
r,
c);
144 for (
int k = 0;
k < stdRepeats; ++
k) {
145 gsl_matrix_memcpy(gslCopy, gslCovMat);
146 gsl_eigen_nonsymmv(gslCopy, eigvalz, eigvectz, einonsymm);
147 acc += GSL_REAL(gsl_matrix_complex_get(eigvectz,
r,
c));
152 std::cout <<
" | \t" << timerSa.
value() *
REPEAT / saRepeats <<
"s \t" << timerStd.
value() *
REPEAT / stdRepeats
155 gsl_matrix_free(gslCovMat);
156 gsl_vector_free(gslCopy);
157 gsl_matrix_free(eigvect);
158 gsl_vector_free(eigval);
159 gsl_matrix_complex_free(eigvectz);
160 gsl_vector_complex_free(eigvalz);
161 gsl_eigen_symmv_free(eisymm);
162 gsl_eigen_nonsymmv_free(einonsymm);
169 if (acc == 123) std::cout << acc;
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
void eiToGmm(const EigenSparseMatrix &src, GmmSparse &dst)
Definition: BenchSparseUtil.h:64
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: benchEigenSolver.cpp:31
#define REPEAT
Definition: benchEigenSolver.cpp:20
#define TRIES
Definition: benchEigenSolver.cpp:24
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
Definition: BenchTimer.h:55
double value(int TIMER=CPU_TIMER) const
Definition: BenchTimer.h:94
void reset()
Definition: BenchTimer.h:68
void stop()
Definition: BenchTimer.h:77
void start()
Definition: BenchTimer.h:73
Computes eigenvalues and eigenvectors of general matrices.
Definition: EigenSolver.h:68
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Computes eigenvalues and eigenvectors of selfadjoint matrices.
Definition: SelfAdjointEigenSolver.h:82
#define max(a, b)
Definition: datatypes.h:23
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
char char char int int * k
Definition: level2_impl.h:374
const int Dynamic
Definition: Constants.h:25
int c
Definition: calibrate.py:100
t
Definition: plotPSD.py:36