*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> complib/dstebz (3)              
Title
Content
Arch
Section
 

Contents


DSTEBZ(3F)							    DSTEBZ(3F)


NAME    [Toc]    [Back]

     DSTEBZ - compute the eigenvalues of a symmetric tridiagonal matrix	T

SYNOPSIS    [Toc]    [Back]

     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    [Toc]    [Back]

     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    [Toc]    [Back]

     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    [Toc]    [Back]

     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.
DSTEBZ(3F)							    DSTEBZ(3F)


NAME    [Toc]    [Back]

     DSTEBZ - compute the eigenvalues of a symmetric tridiagonal matrix	T

SYNOPSIS    [Toc]    [Back]

     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    [Toc]    [Back]

     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    [Toc]    [Back]

     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    [Toc]    [Back]

     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.


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
slaed0 IRIX compute all eigenvalues and corresponding eigenvectors of a symmetric tridiagonal matrix using the divide and
dlaed0 IRIX compute all eigenvalues and corresponding eigenvectors of a symmetric tridiagonal matrix using the divide and
zsteqr IRIX compute all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL
csteqr IRIX compute all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL
zstein IRIX compute the eigenvectors of a real symmetric tridiagonal matrix T corresponding to specified eigenvalues, usin
cstein IRIX compute the eigenvectors of a real symmetric tridiagonal matrix T corresponding to specified eigenvalues, usin
cstedc IRIX compute all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the divide and c
zstedc IRIX compute all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the divide and c
dstedc IRIX compute all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the divide and c
dstein IRIX compute the eigenvectors of a real symmetric tridiagonal matrix T corresponding to specified eigenvalues, usin
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service