DSTEBZ man page on IRIX

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



DSTEBZ(3F)							    DSTEBZ(3F)

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

SYNOPSIS
     SUBROUTINE DSTEBZ( 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

	 DOUBLE		PRECISION ABSTOL, VL, VU

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

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

PURPOSE
     DSTEBZ 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) DOUBLE PRECISION
	     VU	     (input) DOUBLE PRECISION 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

									Page 1

DSTEBZ(3F)							    DSTEBZ(3F)

	     not be returned.  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) DOUBLE PRECISION
	     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*DLAMCH('S'), not zero.

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

     E	     (input) DOUBLE PRECISION 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) DOUBLE PRECISION array, dimension (N)
	     On exit, the first M elements of W will contain the eigenvalues.
	     (DSTEBZ 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.  (DSTEBZ 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

DSTEBZ(3F)							    DSTEBZ(3F)

     WORK    (workspace) DOUBLE PRECISION 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  DOUBLE PRECISION, 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   DOUBLE PRECISION, 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