SSTEBZ man page on IRIX

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



SSTEBZ(3F)							    SSTEBZ(3F)

NAME
     SSTEBZ - compute the eigenvalues of a symmetric tridiagonal matrix T

SYNOPSIS
     SUBROUTINE SSTEBZ( RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E, M,
			NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK, INFO )

	 CHARACTER	ORDER, RANGE

	 INTEGER	IL, INFO, IU, M, N, NSPLIT

	 REAL		ABSTOL, VL, VU

	 INTEGER	IBLOCK( * ), ISPLIT( * ), IWORK( * )

	 REAL		D( * ), E( * ), W( * ), WORK( * )

PURPOSE
     SSTEBZ computes the eigenvalues of a symmetric tridiagonal matrix T.  The
     user may ask for all eigenvalues, all eigenvalues in the half-open
     interval (VL, VU], or the IL-th through IU-th eigenvalues.

     To avoid overflow, the matrix must be scaled so that its
     largest element is no greater than overflow**(1/2) *
     underflow**(1/4) in absolute value, and for greatest
     accuracy, it should not be much smaller than that.

     See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal Matrix",
     Report CS41, Computer Science Dept., Stanford
     University, July 21, 1966.

ARGUMENTS
     RANGE   (input) CHARACTER
	     = 'A': ("All")   all eigenvalues will be found.
	     = 'V': ("Value") all eigenvalues in the half-open interval (VL,
	     VU] will be found.	 = 'I': ("Index") the IL-th through IU-th
	     eigenvalues (of the entire matrix) will be found.

     ORDER   (input) CHARACTER
	     = 'B': ("By Block") the eigenvalues will be grouped by split-off
	     block (see IBLOCK, ISPLIT) and ordered from smallest to largest
	     within the block.	= 'E': ("Entire matrix") the eigenvalues for
	     the entire matrix will be ordered from smallest to largest.

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

     VL	     (input) REAL
	     VU	     (input) REAL If RANGE='V', the lower and upper bounds of
	     the interval to be searched for eigenvalues.  Eigenvalues less
	     than or equal to VL, or greater than VU, will not be returned.

									Page 1

SSTEBZ(3F)							    SSTEBZ(3F)

	     VL < VU.  Not referenced if RANGE = 'A' or 'I'.

     IL	     (input) INTEGER
	     IU	     (input) INTEGER If RANGE='I', the indices (in ascending
	     order) of the smallest and largest eigenvalues to be returned.  1
	     <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.  Not
	     referenced if RANGE = 'A' or 'V'.

     ABSTOL  (input) REAL
	     The absolute tolerance for the eigenvalues.  An eigenvalue (or
	     cluster) is considered to be located if it has been determined to
	     lie in an interval whose width is ABSTOL or less.	If ABSTOL is
	     less than or equal to zero, then ULP*|T| will be used, where |T|
	     means the 1-norm of T.

	     Eigenvalues will be computed most accurately when ABSTOL is set
	     to twice the underflow threshold 2*SLAMCH('S'), not zero.

     D	     (input) REAL array, dimension (N)
	     The n diagonal elements of the tridiagonal matrix T.

     E	     (input) REAL array, dimension (N-1)
	     The (n-1) off-diagonal elements of the tridiagonal matrix T.

     M	     (output) INTEGER
	     The actual number of eigenvalues found. 0 <= M <= N.  (See also
	     the description of INFO=2,3.)

     NSPLIT  (output) INTEGER
	     The number of diagonal blocks in the matrix T.  1 <= NSPLIT <= N.

     W	     (output) REAL array, dimension (N)
	     On exit, the first M elements of W will contain the eigenvalues.
	     (SSTEBZ may use the remaining N-M elements as workspace.)

     IBLOCK  (output) INTEGER array, dimension (N)
	     At each row/column j where E(j) is zero or small, the matrix T is
	     considered to split into a block diagonal matrix.	On exit, if
	     INFO = 0, IBLOCK(i) specifies to which block (from 1 to the
	     number of blocks) the eigenvalue W(i) belongs.  (SSTEBZ may use
	     the remaining N-M elements as workspace.)

     ISPLIT  (output) INTEGER array, dimension (N)
	     The splitting points, at which T breaks up into submatrices.  The
	     first submatrix consists of rows/columns 1 to ISPLIT(1), the
	     second of rows/columns ISPLIT(1)+1 through ISPLIT(2), etc., and
	     the NSPLIT-th consists of rows/columns ISPLIT(NSPLIT-1)+1 through
	     ISPLIT(NSPLIT)=N.	(Only the first NSPLIT elements will actually
	     be used, but since the user cannot know a priori what value
	     NSPLIT will have, N words must be reserved for ISPLIT.)

									Page 2

SSTEBZ(3F)							    SSTEBZ(3F)

     WORK    (workspace) REAL array, dimension (4*N)

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

     INFO    (output) INTEGER
	     = 0:  successful exit
	     < 0:  if INFO = -i, the i-th argument had an illegal value
	     > 0:  some or all of the eigenvalues failed to converge or
	     were not computed:
	     =1 or 3: Bisection failed to converge for some eigenvalues; these
	     eigenvalues are flagged by a negative block number.  The effect
	     is that the eigenvalues may not be as accurate as the absolute
	     and relative tolerances.  This is generally caused by
	     unexpectedly inaccurate arithmetic.  =2 or 3: RANGE='I' only: Not
	     all of the eigenvalues
	     IL:IU were found.
	     Effect: M < IU+1-IL
	     Cause:  non-monotonic arithmetic, causing the Sturm sequence to
	     be non-monotonic.	Cure:	recalculate, using RANGE='A', and pick
	     out eigenvalues IL:IU.  In some cases, increasing the PARAMETER
	     "FUDGE" may make things work.  = 4:    RANGE='I', and the
	     Gershgorin interval initially used was too small.	No eigenvalues
	     were computed.  Probable cause: your machine has sloppy
	     floating-point arithmetic.	 Cure: Increase the PARAMETER "FUDGE",
	     recompile, and try again.

PARAMETERS
     RELFAC  REAL, default = 2.0e0
	     The relative tolerance.  An interval (a,b] lies within "relative
	     tolerance" if  b-a < RELFAC*ulp*max(|a|,|b|), where "ulp" is the
	     machine precision (distance from 1 to the next larger floating
	     point number.)

     FUDGE   REAL, default = 2
	     A "fudge factor" to widen the Gershgorin intervals.  Ideally, a
	     value of 1 should work, but on machines with sloppy arithmetic,
	     this needs to be larger.  The default for publicly released
	     versions should be large enough to handle the worst machine
	     around.  Note that this has no effect on accuracy of the
	     solution.

									Page 3

[top]

List of man pages available for IRIX

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