Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

ctgevc (3p)

Name

ctgevc - compute the right and/or left generalized eigenvectors of a pair of complex upper triangular matrices with real diagonal elements (A,B) obtained from the generalized Schur factorization of an original pair of complex nonsymmetric matrices (AO,BO)

Synopsis

SUBROUTINE CTGEVC(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL,
VR, LDVR, MM, M, WORK, RWORK, INFO)

CHARACTER*1 SIDE, HOWMNY
COMPLEX A(LDA,*), B(LDB,*), VL(LDVL,*), VR(LDVR,*), WORK(*)
INTEGER N, LDA, LDB, LDVL, LDVR, MM, M, INFO
LOGICAL SELECT(*)
REAL RWORK(*)

SUBROUTINE CTGEVC_64(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL,
LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

CHARACTER*1 SIDE, HOWMNY
COMPLEX A(LDA,*), B(LDB,*), VL(LDVL,*), VR(LDVR,*), WORK(*)
INTEGER*8 N, LDA, LDB, LDVL, LDVR, MM, M, INFO
LOGICAL*8 SELECT(*)
REAL RWORK(*)




F95 INTERFACE
SUBROUTINE TGEVC(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL,
LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

CHARACTER(LEN=1) :: SIDE, HOWMNY
COMPLEX, DIMENSION(:) :: WORK
COMPLEX, DIMENSION(:,:) :: A, B, VL, VR
INTEGER :: N, LDA, LDB, LDVL, LDVR, MM, M, INFO
LOGICAL, DIMENSION(:) :: SELECT
REAL, DIMENSION(:) :: RWORK

SUBROUTINE TGEVC_64(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB,
VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

CHARACTER(LEN=1) :: SIDE, HOWMNY
COMPLEX, DIMENSION(:) :: WORK
COMPLEX, DIMENSION(:,:) :: A, B, VL, VR
INTEGER(8) :: N, LDA, LDB, LDVL, LDVR, MM, M, INFO
LOGICAL(8), DIMENSION(:) :: SELECT
REAL, DIMENSION(:) :: RWORK




C INTERFACE
#include <sunperf.h>

void ctgevc(char side, char howmny, int *select, int n, complex *a, int
lda, complex *b, int ldb, complex *vl, int ldvl, complex *vr,
int ldvr, int mm, int *m, int *info);


void ctgevc_64(char side, char howmny, long *select,  long  n,  complex
*a,  long  lda, complex *b, long ldb, complex *vl, long ldvl,
complex *vr, long ldvr, long mm, long *m, long *info);

Description

Oracle Solaris Studio Performance Library                           ctgevc(3P)



NAME
       ctgevc  -  compute  the right and/or left generalized eigenvectors of a
       pair of complex upper triangular matrices with real  diagonal  elements
       (A,B)  obtained from the generalized Schur factorization of an original
       pair of complex nonsymmetric matrices (AO,BO)


SYNOPSIS
       SUBROUTINE CTGEVC(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL,
             VR, LDVR, MM, M, WORK, RWORK, INFO)

       CHARACTER*1 SIDE, HOWMNY
       COMPLEX A(LDA,*), B(LDB,*), VL(LDVL,*), VR(LDVR,*), WORK(*)
       INTEGER N, LDA, LDB, LDVL, LDVR, MM, M, INFO
       LOGICAL SELECT(*)
       REAL RWORK(*)

       SUBROUTINE CTGEVC_64(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL,
             LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

       CHARACTER*1 SIDE, HOWMNY
       COMPLEX A(LDA,*), B(LDB,*), VL(LDVL,*), VR(LDVR,*), WORK(*)
       INTEGER*8 N, LDA, LDB, LDVL, LDVR, MM, M, INFO
       LOGICAL*8 SELECT(*)
       REAL RWORK(*)




   F95 INTERFACE
       SUBROUTINE TGEVC(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL,
              LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

       CHARACTER(LEN=1) :: SIDE, HOWMNY
       COMPLEX, DIMENSION(:) :: WORK
       COMPLEX, DIMENSION(:,:) :: A, B, VL, VR
       INTEGER :: N, LDA, LDB, LDVL, LDVR, MM, M, INFO
       LOGICAL, DIMENSION(:) :: SELECT
       REAL, DIMENSION(:) :: RWORK

       SUBROUTINE TGEVC_64(SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB,
              VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)

       CHARACTER(LEN=1) :: SIDE, HOWMNY
       COMPLEX, DIMENSION(:) :: WORK
       COMPLEX, DIMENSION(:,:) :: A, B, VL, VR
       INTEGER(8) :: N, LDA, LDB, LDVL, LDVR, MM, M, INFO
       LOGICAL(8), DIMENSION(:) :: SELECT
       REAL, DIMENSION(:) :: RWORK




   C INTERFACE
       #include <sunperf.h>

       void ctgevc(char side, char howmny, int *select, int n, complex *a, int
                 lda, complex *b, int ldb, complex *vl, int ldvl, complex *vr,
                 int ldvr, int mm, int *m, int *info);


       void ctgevc_64(char side, char howmny, long *select,  long  n,  complex
                 *a,  long  lda, complex *b, long ldb, complex *vl, long ldvl,
                 complex *vr, long ldvr, long mm, long *m, long *info);



PURPOSE
       ctgevc computes some or all of the right and/or left generalized eigen-
       vectors  of  a pair of complex upper triangular matrices (A,B) that was
       obtained from from the generalized Schur factorization of  an  original
       pair  of complex nonsymmetric matrices (AO,BO).  A and B are upper tri-
       angular matrices and B must have real diagonal elements.

       The right generalized eigenvector x and the left generalized  eigenvec-
       tor  y of (A,B) corresponding to a generalized eigenvalue w are defined
       by:

               (A - wB) * x = 0  and  y**H * (A - wB) = 0

       where y**H denotes the conjugate tranpose of y.

       If an eigenvalue w is determined by zero diagonal elements  of  both  A
       and B, a unit vector is returned as the corresponding eigenvector.

       If  all  eigenvectors  are requested, the routine may either return the
       matrices X and/or Y of right or left  eigenvectors  of  (A,B),  or  the
       products  Z*X and/or Q*Y, where Z and Q are input unitary matrices.  If
       (A,B) was obtained from the generalized Schur factorization of an orig-
       inal pair of matrices
          (A0,B0) = (Q*A*Z**H,Q*B*Z**H),
       then Z*X and Q*Y are the matrices of right or left eigenvectors of A.


ARGUMENTS
       SIDE (input)
                 = 'R': compute right eigenvectors only;
                 = 'L': compute left eigenvectors only;
                 = 'B': compute both right and left eigenvectors.


       HOWMNY (input)
                 = 'A': compute all right and/or left eigenvectors;
                 =  'B': compute all right and/or left eigenvectors, and back-
                 transform them using the input matrices supplied in VR and/or
                 VL;  =  'S': compute selected right and/or left eigenvectors,
                 specified by the logical array SELECT.


       SELECT (input)
                 If HOWMNY='S', SELECT specifies the eigenvectors to  be  com-
                 puted.   If  HOWMNY='A' or 'B', SELECT is not referenced.  To
                 select the eigenvector corresponding to the j-th  eigenvalue,
                 SELECT(j) must be set to .TRUE..


       N (input) The order of the matrices A and B.  N >= 0.


       A (input) The upper triangular matrix A.


       LDA (input)
                 The leading dimension of array A.  LDA >= max(1,N).


       B (input) The  upper  triangular  matrix  B.  B must have real diagonal
                 elements.


       LDB (input)
                 The leading dimension of array B.  LDB >= max(1,N).


       VL (input/output)
                 On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must con-
                 tain 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 (A,B); if HOWMNY = 'B', the  matrix  Q*Y;  if
                 HOWMNY  =  'S',  the  left eigenvectors of (A,B) specified by
                 SELECT, stored consecutively in the columns  of  VL,  in  the
                 same  order  as  their eigenvalues.  If SIDE = 'R', VL is not
                 referenced.


       LDVL (input)
                 The leading dimension of array VL.  LDVL >= max(1,N) if  SIDE
                 = 'L' or 'B'; LDVL >= 1 otherwise.


       VR (input/output)
                 On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must con-
                 tain 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 (A,B); if HOWMNY = 'B', the matrix Z*X;
                 if HOWMNY = 'S', the right eigenvectors of (A,B) specified by
                 SELECT,  stored  consecutively  in  the columns of VR, in the
                 same order as their eigenvalues.  If SIDE = 'L',  VR  is  not
                 referenced.


       LDVR (input)
                 The  leading  dimension of the array VR.  LDVR >= max(1,N) if
                 SIDE = 'R' or 'B'; LDVR >= 1 otherwise.


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


       M (output)
                 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)
                 dimension(2*N)

       RWORK (workspace)
                 dimension(2*N)

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




                                  7 Nov 2015                        ctgevc(3P)