.TH "SRC/dstebz.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME SRC/dstebz.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBdstebz\fP (range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w, iblock, isplit, work, iwork, info)" .br .RI "\fBDSTEBZ\fP " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "subroutine dstebz (character range, character order, integer n, double precision vl, double precision vu, integer il, integer iu, double precision abstol, double precision, dimension( * ) d, double precision, dimension( * ) e, integer m, integer nsplit, double precision, dimension( * ) w, integer, dimension( * ) iblock, integer, dimension( * ) isplit, double precision, dimension( * ) work, integer, dimension( * ) iwork, integer info)" .PP \fBDSTEBZ\fP .PP \fBPurpose:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIRANGE\fP .PP .nf RANGE is CHARACTER*1 = '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\&. .fi .PP .br \fIORDER\fP .PP .nf ORDER is CHARACTER*1 = '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\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER The order of the tridiagonal matrix T\&. N >= 0\&. .fi .PP .br \fIVL\fP .PP .nf VL is DOUBLE PRECISION If RANGE='V', the lower bound of the interval to be searched for eigenvalues\&. Eigenvalues less than or equal to VL, or greater than VU, will not be returned\&. VL < VU\&. Not referenced if RANGE = 'A' or 'I'\&. .fi .PP .br \fIVU\fP .PP .nf VU is DOUBLE PRECISION If RANGE='V', the upper bound of the interval to be searched for eigenvalues\&. Eigenvalues less than or equal to VL, or greater than VU, will not be returned\&. VL < VU\&. Not referenced if RANGE = 'A' or 'I'\&. .fi .PP .br \fIIL\fP .PP .nf IL is INTEGER If RANGE='I', the index of the smallest eigenvalue 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'\&. .fi .PP .br \fIIU\fP .PP .nf IU is INTEGER If RANGE='I', the index of the largest eigenvalue 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'\&. .fi .PP .br \fIABSTOL\fP .PP .nf ABSTOL is 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\&. .fi .PP .br \fID\fP .PP .nf D is DOUBLE PRECISION array, dimension (N) The n diagonal elements of the tridiagonal matrix T\&. .fi .PP .br \fIE\fP .PP .nf E is DOUBLE PRECISION array, dimension (N-1) The (n-1) off-diagonal elements of the tridiagonal matrix T\&. .fi .PP .br \fIM\fP .PP .nf M is INTEGER The actual number of eigenvalues found\&. 0 <= M <= N\&. (See also the description of INFO=2,3\&.) .fi .PP .br \fINSPLIT\fP .PP .nf NSPLIT is INTEGER The number of diagonal blocks in the matrix T\&. 1 <= NSPLIT <= N\&. .fi .PP .br \fIW\fP .PP .nf W is 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\&.) .fi .PP .br \fIIBLOCK\fP .PP .nf IBLOCK is 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\&.) .fi .PP .br \fIISPLIT\fP .PP .nf ISPLIT is 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\&.) .fi .PP .br \fIWORK\fP .PP .nf WORK is DOUBLE PRECISION array, dimension (4*N) .fi .PP .br \fIIWORK\fP .PP .nf IWORK is INTEGER array, dimension (3*N) .fi .PP .br \fIINFO\fP .PP .nf INFO is 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\&. .fi .PP .RE .PP \fBInternal Parameters:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP .PP Definition at line \fB270\fP of file \fBdstebz\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.