20 #ifndef __mast__lapack_dgeev_interface_h__ 21 #define __mast__lapack_dgeev_interface_h__ 129 extern void dgeev_(
const char* jobvl,
163 bool computeEigenvectors =
true);
165 ComputationInfo
info()
const;
202 for (
unsigned int i=0; i<
_A.cols(); i++) {
204 if (std::abs(val) > 0.)
205 this->
VR.col(i) *= (1./val);
212 r = this->
VL.conjugate().transpose() *
_A * this->
VR;
213 out <<
"conj(VL)' * A * VR" << std::endl
216 r = this->
VL.conjugate().transpose() * this->
VR;
217 out <<
"conj(VL)' * B * VR" << std::endl
237 #endif // __mast__lapack_dgeev_interface_h__ const ComplexVectorX & eig_vals() const
ComputationInfo info() const
void scale_eigenvectors_to_identity_innerproduct()
Scales the right eigenvector so that the inner product with respect to the B matrix is equal to an Id...
const ComplexMatrixX & right_eigenvectors() const
Matrix< Complex, Dynamic, 1 > ComplexVectorX
void dgeev_(const char *jobvl, const char *jobvr, int *n, double *a, int *lda, double *w_r, double *w_i, double *vl, int *ldvl, double *vr, int *ldvr, double *work, int *lwork, int *info)
Matrix< Real, Dynamic, Dynamic > RealMatrixX
Matrix< Complex, Dynamic, Dynamic > ComplexMatrixX
void compute(const RealMatrixX &A, bool computeEigenvectors=true)
computes the eigensolution for .
const ComplexMatrixX & left_eigenvectors() const
const RealMatrixX & A() const
void print_inner_product(std::ostream &out) const