---
name: "ctgevc"
section: "3lapack"
platform: "linux"
package: "liblapack-doc"
version: "3.2.1-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/ctgevc/3lapack"
---

# ctgevc(3lapack)

computes some or all of the right and/or left eigenvectors of a pair of complex matrices (S,P), where S and P are upper triangular

## NAME

CTGEVC - computes some or all of the right and/or left eigenvectors of a pair of complex matrices (S,P), where S and P are upper triangular

## SYNOPSIS

- SUBROUTINE CTGEVC(

  SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO )

- CHARACTER

  HOWMNY, SIDE

- INTEGER

  INFO, LDP, LDS, LDVL, LDVR, M, MM, N

- LOGICAL

  SELECT( \* )

- REAL

  RWORK( \* )

- COMPLEX

  P( LDP, \* ), S( LDS, \* ), VL( LDVL, \* ), VR( LDVR, \* ), WORK( \* )

## PURPOSE

CTGEVC computes some or all of the right and/or left eigenvectors of a pair of complex matrices (S,P), where S and P are upper triangular. Matrix pairs of this type are produced by the generalized Schur factorization of a complex matrix pair (A,B):\
\
\
    A = Q\*S\*Z\*\*H,  B = Q\*P\*Z\*\*H\
\
 as computed by CGGHRD + CHGEQZ.\
\
 The right eigenvector x and the left eigenvector y of (S,P) corresponding to an eigenvalue w are defined by:\
\
\
    S\*x = w\*P\*x,  (y\*\*H)\*S = w\*(y\*\*H)\*P,\
\
 where y\*\*H denotes the conjugate tranpose of y.\
 The eigenvalues are not input to this routine, but are computed directly from the diagonal elements of S and P.\
\
 This routine returns the matrices X and/or Y of right and left eigenvectors of (S,P), or the products Z\*X and/or Q\*Y,\
 where Z and Q are input matrices.\
 If Q and Z are the unitary factors from the generalized Schur factorization of a matrix pair (A,B), then Z\*X and Q\*Y\
 are the matrices of right and left eigenvectors of (A,B).

## ARGUMENTS

- SIDE (input) CHARACTER\*1

  \= 'R': compute right eigenvectors only;\
   \= 'L': compute left eigenvectors only;\
   \= 'B': compute both right and left eigenvectors.

- HOWMNY (input) CHARACTER\*1

  \= 'A': compute all right and/or left eigenvectors;\
   \= 'B': compute all right and/or left eigenvectors, backtransformed by the matrices in VR and/or VL; = 'S': compute selected right and/or left eigenvectors, specified by the logical array SELECT.

- SELECT (input) LOGICAL array, dimension (N)

  If HOWMNY='S', SELECT specifies the eigenvectors to be computed.  The eigenvector corresponding to the j-th eigenvalue is computed if SELECT(j) = .TRUE.. Not referenced if HOWMNY = 'A' or 'B'.

- N (input) INTEGER

  The order of the matrices S and P.  N \>= 0.

- S (input) COMPLEX array, dimension (LDS,N)

  The upper triangular matrix S from a generalized Schur factorization, as computed by CHGEQZ.

- LDS (input) INTEGER

  The leading dimension of array S.  LDS \>= max(1,N).

- P (input) COMPLEX array, dimension (LDP,N)

  The upper triangular matrix P from a generalized Schur factorization, as computed by CHGEQZ.  P must have real diagonal elements.

- LDP (input) INTEGER

  The leading dimension of array P.  LDP \>= max(1,N).

- VL (input/output) COMPLEX array, dimension (LDVL,MM)

  On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must contain an N-by-N matrix Q (usually the unitary matrix Q of left Schur vectors returned by CHGEQZ). On exit, if SIDE = 'L' or 'B', VL contains: if HOWMNY = 'A', the matrix Y of left eigenvectors of (S,P); if HOWMNY = 'B', the matrix Q\*Y; if HOWMNY = 'S', the left eigenvectors of (S,P) specified by SELECT, stored consecutively in the columns of VL, in the same order as their eigenvalues. Not referenced if SIDE = 'R'.

- LDVL (input) INTEGER

  The leading dimension of array VL.  LDVL \>= 1, and if SIDE = 'L' or 'l' or 'B' or 'b', LDVL \>= N.

- VR (input/output) COMPLEX array, dimension (LDVR,MM)

  On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must contain an N-by-N matrix Q (usually the unitary matrix Z of right Schur vectors returned by CHGEQZ). On exit, if SIDE = 'R' or 'B', VR contains: if HOWMNY = 'A', the matrix X of right eigenvectors of (S,P); if HOWMNY = 'B', the matrix Z\*X; if HOWMNY = 'S', the right eigenvectors of (S,P) specified by SELECT, stored consecutively in the columns of VR, in the same order as their eigenvalues. Not referenced if SIDE = 'L'.

- LDVR (input) INTEGER

  The leading dimension of the array VR.  LDVR \>= 1, and if SIDE = 'R' or 'B', LDVR \>= N.

- MM (input) INTEGER

  The number of columns in the arrays VL and/or VR. MM \>= M.

- M (output) INTEGER

  The number of columns in the arrays VL and/or VR actually used to store the eigenvectors.  If HOWMNY = 'A' or 'B', M is set to N.  Each selected eigenvector occupies one column.

- WORK (workspace) COMPLEX array, dimension (2\*N)

  - RWORK (workspace) REAL array, dimension (2\*N)

  - INFO (output) INTEGER

  \= 0:  successful exit.\
   \< 0:  if INFO = -i, the i-th argument had an illegal value.
