summaryrefslogtreecommitdiffhomepage
path: root/eigen/lapack/eigenvalues.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/lapack/eigenvalues.cpp
parent543edd372a5193d04b3de9f23c176ab439e51b31 (diff)
don't index Eigen
Diffstat (limited to 'eigen/lapack/eigenvalues.cpp')
-rw-r--r--eigen/lapack/eigenvalues.cpp62
1 files changed, 0 insertions, 62 deletions
diff --git a/eigen/lapack/eigenvalues.cpp b/eigen/lapack/eigenvalues.cpp
deleted file mode 100644
index 921c515..0000000
--- a/eigen/lapack/eigenvalues.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
-//
-// 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 "lapack_common.h"
-#include <Eigen/Eigenvalues>
-
-// computes eigen values and vectors of a general N-by-N matrix A
-EIGEN_LAPACK_FUNC(syev,(char *jobz, char *uplo, int* n, Scalar* a, int *lda, Scalar* w, Scalar* /*work*/, int* lwork, int *info))
-{
- // TODO exploit the work buffer
- bool query_size = *lwork==-1;
-
- *info = 0;
- if(*jobz!='N' && *jobz!='V') *info = -1;
- else if(UPLO(*uplo)==INVALID) *info = -2;
- else if(*n<0) *info = -3;
- else if(*lda<std::max(1,*n)) *info = -5;
- else if((!query_size) && *lwork<std::max(1,3**n-1)) *info = -8;
-
- if(*info!=0)
- {
- int e = -*info;
- return xerbla_(SCALAR_SUFFIX_UP"SYEV ", &e, 6);
- }
-
- if(query_size)
- {
- *lwork = 0;
- return 0;
- }
-
- if(*n==0)
- return 0;
-
- PlainMatrixType mat(*n,*n);
- if(UPLO(*uplo)==UP) mat = matrix(a,*n,*n,*lda).adjoint();
- else mat = matrix(a,*n,*n,*lda);
-
- bool computeVectors = *jobz=='V' || *jobz=='v';
- SelfAdjointEigenSolver<PlainMatrixType> eig(mat,computeVectors?ComputeEigenvectors:EigenvaluesOnly);
-
- if(eig.info()==NoConvergence)
- {
- make_vector(w,*n).setZero();
- if(computeVectors)
- matrix(a,*n,*n,*lda).setIdentity();
- //*info = 1;
- return 0;
- }
-
- make_vector(w,*n) = eig.eigenvalues();
- if(computeVectors)
- matrix(a,*n,*n,*lda) = eig.eigenvectors();
-
- return 0;
-}