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

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

SYNOPSIS

  SUBROUTINE DSTEVX( JOBZ, RANGE, N, D,	E, VL, VU, IL, IU, ABSTOL, M, W, Z,
		     LDZ, WORK,	IWORK, IFAIL, INFO )

      CHARACTER	     JOBZ, RANGE

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

      DOUBLE	     PRECISION ABSTOL, VL, VU

      INTEGER	     IFAIL( * ), IWORK(	* )

      DOUBLE	     PRECISION D( * ), E( * ), W( * ), WORK( * ), Z( LDZ, * )

PURPOSE
  DSTEVX computes selected eigenvalues and, optionally,	eigenvectors of	a
  real symmetric tridiagonal matrix A.	Eigenvalues/vectors 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.

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

  D	  (input/output) DOUBLE	PRECISION array, dimension (N)
	  On entry, the	n diagonal elements of the tridiagonal matrix A.  On
	  exit,	D may be multiplied by a constant factor chosen	to avoid
	  over/underflow in computing the eigenvalues.

  E	  (input/output) DOUBLE	PRECISION array, dimension (N)
	  On entry, the	(n-1) subdiagonal elements of the tridiagonal matrix
	  A in elements	1 to N-1 of E; E(N) need not be	set.  On exit, E may
	  be multiplied	by a constant factor chosen to avoid over/underflow
	  in computing the eigenvalues.

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

  VU	  (input) DOUBLE PRECISION
	  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.  IL <= IU <= N.  Not referenced if	RANGE
	  = 'A'	or 'V'.

  ABSTOL  (input) DOUBLE PRECISION
	  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.

	  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) DOUBLE PRECISION array, dimension (N)
	  On normal exit, the first M entries contain the selected eigen-
	  values in ascending order.

  Z	  (output) DOUBLE PRECISION 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 A corresponding to	the
	  selected eigenvalues,	with the i-th column of	Z holding the eigen-
	  vector associated with W(i).	If an eigenvector fails	to converge
	  (INFO	> 0), then that	column of Z contains the latest	approximation
	  to the eigenvector, 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) DOUBLE PRECISION array, dimension	(5*N)

  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 eigen-
	  vectors 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 expert driver routines