chegvd man page on Scientific

Man page or keyword search:  
man Server   26626 pages
apropos Keyword Search (all sections)
Output format
Scientific logo
[printable version]

CHEGVD(1)	      LAPACK driver routine (version 3.2)	     CHEGVD(1)

NAME
       CHEGVD - computes all the eigenvalues, and optionally, the eigenvectors
       of a complex generalized Hermitian-definite eigenproblem, of  the  form
       A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x

SYNOPSIS
       SUBROUTINE CHEGVD( ITYPE,  JOBZ,	 UPLO,	N,  A,	LDA,  B, LDB, W, WORK,
			  LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO )

	   CHARACTER	  JOBZ, UPLO

	   INTEGER	  INFO, ITYPE, LDA, LDB, LIWORK, LRWORK, LWORK, N

	   INTEGER	  IWORK( * )

	   REAL		  RWORK( * ), W( * )

	   COMPLEX	  A( LDA, * ), B( LDB, * ), WORK( * )

PURPOSE
       CHEGVD computes all the eigenvalues, and optionally,  the  eigenvectors
       of  a  complex generalized Hermitian-definite eigenproblem, of the form
       A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.  Here A and B
       are assumed to be Hermitian and B is also positive definite.  If eigen‐
       vectors are desired, it uses  a	divide	and  conquer  algorithm.   The
       divide and conquer algorithm makes very mild assumptions about floating
       point arithmetic. It will work  on  machines  with  a  guard  digit  in
       add/subtract,  or  on  those binary machines without guard digits which
       subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It	 could
       conceivably  fail on hexadecimal or decimal machines without guard dig‐
       its, but we know of none.

ARGUMENTS
       ITYPE   (input) INTEGER
	       Specifies the problem type to be solved:
	       = 1:  A*x = (lambda)*B*x
	       = 2:  A*B*x = (lambda)*x
	       = 3:  B*A*x = (lambda)*x

       JOBZ    (input) CHARACTER*1
	       = 'N':  Compute eigenvalues only;
	       = 'V':  Compute eigenvalues and eigenvectors.

       UPLO    (input) CHARACTER*1
	       = 'U':  Upper triangles of A and B are stored;
	       = 'L':  Lower triangles of A and B are stored.

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

       A       (input/output) COMPLEX array, dimension (LDA, N)
	       On entry, the Hermitian matrix A.  If UPLO = 'U',  the  leading
	       N-by-N upper triangular part of A contains the upper triangular
	       part of the matrix A.  If UPLO = 'L', the leading N-by-N	 lower
	       triangular  part of A contains the lower triangular part of the
	       matrix A.  On exit, if JOBZ = 'V', then if INFO = 0, A contains
	       the  matrix Z of eigenvectors.  The eigenvectors are normalized
	       as follows: if ITYPE = 1 or 2, Z**H*B*Z =  I;  if  ITYPE	 =  3,
	       Z**H*inv(B)*Z  = I.  If JOBZ = 'N', then on exit the upper tri‐
	       angle (if UPLO='U') or the lower triangle (if UPLO='L')	of  A,
	       including the diagonal, is destroyed.

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

       B       (input/output) COMPLEX array, dimension (LDB, N)
	       On  entry,  the Hermitian matrix B.  If UPLO = 'U', the leading
	       N-by-N upper triangular part of B contains the upper triangular
	       part  of the matrix B.  If UPLO = 'L', the leading N-by-N lower
	       triangular part of B contains the lower triangular part of  the
	       matrix  B.  On exit, if INFO <= N, the part of B containing the
	       matrix is overwritten by the triangular factor U or L from  the
	       Cholesky factorization B = U**H*U or B = L*L**H.

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

       W       (output) REAL array, dimension (N)
	       If INFO = 0, the eigenvalues in ascending order.

       WORK    (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
	       On exit, if INFO = 0, WORK(1) returns the optimal LWORK.

       LWORK   (input) INTEGER
	       The  length of the array WORK.  If N <= 1,		 LWORK
	       >= 1.  If JOBZ  = 'N' and N > 1, LWORK >= N + 1.	  If  JOBZ   =
	       'V'  and	 N  >  1,  LWORK >= 2*N + N**2.	 If LWORK = -1, then a
	       workspace query is assumed; the	routine	 only  calculates  the
	       optimal	sizes  of  the	WORK,  RWORK and IWORK arrays, returns
	       these values as the first entries of the WORK, RWORK and	 IWORK
	       arrays,	and  no	 error	message	 related to LWORK or LRWORK or
	       LIWORK is issued by XERBLA.

       RWORK   (workspace/output) REAL array, dimension (MAX(1,LRWORK))
	       On exit, if INFO = 0, RWORK(1) returns the optimal LRWORK.

       LRWORK  (input) INTEGER
	       The   dimension	 of   the   array   RWORK.    If   N   <=   1,
	       LRWORK  >=  1.  If JOBZ	= 'N' and N > 1, LRWORK >= N.  If JOBZ
	       = 'V' and N > 1, LRWORK >= 1 + 5*N + 2*N**2.  If LRWORK	=  -1,
	       then  a workspace query is assumed; the routine only calculates
	       the optimal sizes of the WORK, RWORK and IWORK arrays,  returns
	       these  values as the first entries of the WORK, RWORK and IWORK
	       arrays, and no error message related  to	 LWORK	or  LRWORK  or
	       LIWORK is issued by XERBLA.

       IWORK   (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
	       On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.

       LIWORK  (input) INTEGER
	       The   dimension	 of   the   array   IWORK.    If   N   <=   1,
	       LIWORK >= 1.  If JOBZ  = 'N' and N > 1, LIWORK >= 1.   If  JOBZ
	       =  'V'  and  N  > 1, LIWORK >= 3 + 5*N.	If LIWORK = -1, then a
	       workspace query is assumed; the	routine	 only  calculates  the
	       optimal	sizes  of  the	WORK,  RWORK and IWORK arrays, returns
	       these values as the first entries of the WORK, RWORK and	 IWORK
	       arrays,	and  no	 error	message	 related to LWORK or LRWORK or
	       LIWORK is issued by XERBLA.

       INFO    (output) INTEGER
	       = 0:  successful exit
	       < 0:  if INFO = -i, the i-th argument had an illegal value
	       > 0:  CPOTRF or CHEEVD returned an error code:
	       <= N:  if INFO = i and JOBZ = 'N', then the algorithm failed to
	       converge;  i off-diagonal elements of an intermediate tridiago‐
	       nal form did not converge to zero; if INFO = i and JOBZ =  'V',
	       then  the algorithm failed to compute an eigenvalue while work‐
	       ing on the submatrix  lying  in	rows  and  columns  INFO/(N+1)
	       through mod(INFO,N+1); > N:   if INFO = N + i, for 1 <= i <= N,
	       then the leading minor of order i of B is  not  positive	 defi‐
	       nite.  The factorization of B could not be completed and no ei‐
	       genvalues or eigenvectors were computed.

FURTHER DETAILS
       Based on contributions by
	  Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA	 Modi‐
       fied  so	 that no backsubstitution is performed if CHEEVD fails to con‐
       verge (NEIG in old code could be greater than N causing out  of	bounds
       reference  to A - reported by Ralf Meyer).  Also corrected the descrip‐
       tion of INFO and the test on ITYPE. Sven, 16 Feb 05.

 LAPACK driver routine (version 3November 2008			     CHEGVD(1)
[top]

List of man pages available for Scientific

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net