### Eigenvectors for non-symmetric dense matrix (ScaLAPACK)

Posted:

**Mon Mar 26, 2012 8:44 am**
by **zarkobodroski**

Hi,

Is there routine in ScaLAPACK for solving eigenvectors and eigenvalues for non-symmetric dense matrix?

Thanks.

### Re: Eigenvectors for non-symmetric dense matrix (ScaLAPACK)

Posted:

**Mon Mar 26, 2012 9:17 am**
by **Julien Langou**

Unfortunately no. There is no such things as an PDGEEV (the ScaLAPACK equivalent of LAPACK DGEEV). We have made some progresses recently thanks to contributions from Robert Granat, Bo Kågström, Meiyue Shao (Umeå University and HPC2N), and Daniel Kressner (École Polytechnique Fédérale de Lausanne). But we are yet missing the eigenvectors computation from the Schur form and a driver to link all the subroutines together. Cheers, Julien.

### Re: Eigenvectors for non-symmetric dense matrix (ScaLAPACK)

Posted:

**Wed Sep 12, 2012 5:58 pm**
by **volkerblum**

Dear Julien,

has there been any progress regarding the Schur decomposition?

best wishes

VB

### Re: Eigenvectors for non-symmetric dense matrix (ScaLAPACK)

Posted:

**Tue Jun 13, 2017 7:05 pm**
by **wardbg**

I believe I have found a solution . The description below omits things like allocating memory, initializing the descriptors etc. To find the left eigenvectors of a square non-symmetric eigenproblem (NEP) I do the following (I am using scalar type 'C'):

Call PCGEHRD(N,1,N,A,1,1,DESCA,TAU,WORK,LWORK,INFO) where A is my distributed complex matrix of order N

Take the result in A and split it up into two matrices, H (upper triangular part plus first subdiagonal) and Q (the rest) as described in the PGEHRD documentation. Initialize a new distributed matrix Z and set it to the identity matrix.

Call PCLAHQR(.TRUE.,.TRUE.,N,1,N,H,DESCH,W,1,N,Z,DESCZ,WORK,LWORK,-1,-1,INFO)

Call PCTREVC( 'R', 'B', SELECT, N, H, DESCH, VL, DESCVL, Z, DESCZ, N, N, WORK, RWORK, INFO )

Call PCUNMHR('L','N',N,N,1,N,Q,1,1,DESCQ,TAU,Z,1,1,DESCZ,WORK,LWORK,INFO)

Now the left eigenvectors are in the matrix Z. So basically, the matrix is transformed twice, and the transformations are captured in different ways. After the eigenvectors are calculated, the transformations are reversed to yield the eigenvectors of A.