SSYEVX(l)	     LAPACK driver routine (version 1.1)	    SSYEVX(l)

NAME
  SSYEVX - compute selected eigenvalues	and, optionally, eigenvectors of a
  real symmetric matrix	A

SYNOPSIS

  SUBROUTINE SSYEVX( JOBZ, RANGE, UPLO,	N, A, LDA, VL, VU, IL, IU, ABSTOL, M,
		     W,	Z, LDZ,	WORK, LWORK, IWORK, IFAIL, INFO	)

      CHARACTER	     JOBZ, RANGE, UPLO

      INTEGER	     IL, INFO, IU, LDA,	LDZ, LWORK, M, N

      REAL	     ABSTOL, VL, VU

      INTEGER	     IFAIL( * ), IWORK(	* )

      REAL	     A(	LDA, * ), W( * ), WORK(	* ), Z(	LDZ, * )

PURPOSE
  SSYEVX computes selected eigenvalues and, optionally,	eigenvectors of	a
  real symmetric matrix	A.  Eigenvalues	and eigenvectors can be	selected by
  specifying either a range of values or a range of indices for	the desired
  eigenvalues.

ARGUMENTS

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

  RANGE	  (input) CHARACTER*1
	  = 'A': all eigenvalues will be found.
	  = 'V': all eigenvalues in the	half-open interval (VL,VU] will	be
	  found.  = 'I': the IL-th through IU-th eigenvalues will be found.

  UPLO	  (input) CHARACTER*1
	  = 'U':  Upper	triangle of A is stored;
	  = 'L':  Lower	triangle of A is stored.

  N	  (input) INTEGER
	  The order of the matrix A.  N	>= 0.

  A	  (input/workspace) REAL array,	dimension (LDA,	N)
	  On entry, the	symmetric 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 triangu-
	  lar part of A	contains the lower triangular part of the matrix A.
	  On exit, the lower triangle (if UPLO='L') or the upper triangle (if
	  UPLO='U') of A, including the	diagonal, is destroyed.

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

  VL	  (input) REAL
	  If RANGE='V',	the lower bound	of the interval	to be searched for
	  eigenvalues.	Not referenced if RANGE	= 'A' or 'I'.

  VU	  (input) REAL
	  If RANGE='V',	the upper bound	of the interval	to be searched for
	  eigenvalues.	Not referenced if RANGE	= 'A' or 'I'.

  IL	  (input) INTEGER
	  If RANGE='I',	the index (from	smallest to largest) of	the smallest
	  eigenvalue to	be returned.  IL >= 1.	Not referenced if RANGE	= 'A'
	  or 'V'.

  IU	  (input) INTEGER
	  If RANGE='I',	the index (from	smallest to largest) of	the largest
	  eigenvalue to	be returned.  min(IL,N)	<= IU <= N.  Not referenced
	  if RANGE = 'A' or 'V'.

  ABSTOL  (input) REAL
	  The absolute error tolerance for the eigenvalues.  An	approximate
	  eigenvalue is	accepted as converged when it is determined to lie in
	  an interval [a,b] of width less than or equal	to

	  ABSTOL + EPS *   max(	|a|,|b|	) ,

	  where	EPS is the machine precision.  If ABSTOL is less than or
	  equal	to zero, then  EPS*|T|	will be	used in	its place, where |T|
	  is the 1-norm	of the tridiagonal matrix obtained by reducing A to
	  tridiagonal form.

	  See "Computing Small Singular	Values of Bidiagonal Matrices with
	  Guaranteed High Relative Accuracy," by Demmel	and Kahan, LAPACK
	  Working Note #3.

  M	  (output) INTEGER
	  The total number of eigenvalues found.  0 <= M <= N.	If RANGE =
	  'A', M = N, and if RANGE = 'I', M = IU-IL+1.

  W	  (output) REAL	array, dimension (N)
	  On normal exit, the first M entries contain the selected eigen-
	  values in ascending order.

  Z	  (output) REAL	array, dimension (LDZ, max(1,M))
	  If JOBZ = 'V', then if INFO =	0, the first M columns of Z contain
	  the orthonormal eigenvectors of the matrix corresponding to the
	  selected eigenvalues.	 If an eigenvector fails to converge, then
	  that column of Z contains the	latest approximation to	the eigenvec-
	  tor, and the index of	the eigenvector	is returned in IFAIL.  If
	  JOBZ = 'N', then Z is	not referenced.	 Note: the user	must ensure
	  that at least	max(1,M) columns are supplied in the array Z; if
	  RANGE	= 'V', the exact value of M is not known in advance and	an
	  upper	bound must be used.

  LDZ	  (input) INTEGER
	  The leading dimension	of the array Z.	 LDZ >=	1, and if JOBZ = 'V',
	  LDZ >= max(1,N).

  WORK	  (workspace) REAL array, dimension (LWORK)
	  On exit, if INFO = 0,	WORK(1)	returns	the optimal LWORK.

  LWORK	  (input) INTEGER
	  The length of	the array WORK.	 LWORK >= max(1,8*N).  For optimal
	  efficiency, LWORK >= (NB+3)*N, where NB is the blocksize for SSYTRD
	  returned by ILAENV.

  IWORK	  (workspace) INTEGER array, dimension (5*N)

  IFAIL	  (output) INTEGER array, dimension (N)
	  If JOBZ = 'V', then if INFO =	0, the first M elements	of IFAIL are
	  zero.	 If INFO > 0, then IFAIL contains the indices of the
	  eigenvectors that failed to converge.	 If JOBZ = 'N',	then IFAIL is
	  not referenced.

  INFO	  (output) INTEGER
	  = 0:	successful exit
	  < 0:	if INFO	= -i, the i-th argument	had an illegal value
	  > 0:	if INFO	= i, then i eigenvectors failed	to converge.  Their
	  indices are stored in	array IFAIL.


Back to the listing of simple driver routines
Back to the listing of expert driver routines