Loading...
Searching...
No Matches

## dstein()

subroutine dstein | ( | integer | n,
|  | double precision, dimension( * ) | d,
|  | double precision, dimension( * ) | e,
|  | integer | m,
|  | double precision, dimension( * ) | w,
|  | integer, dimension( * ) | iblock,
|  | integer, dimension( * ) | isplit,
|  | double precision, dimension( ldz, * ) | z,
|  | integer | ldz,
|  | double precision, dimension( * ) | work,
|  | integer, dimension( * ) | iwork,
|  | integer, dimension( * ) | ifail,
|  | integer | info )

DSTEIN

Download DSTEIN + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !> DSTEIN computes the eigenvectors of a real symmetric tridiagonal
      !> matrix T corresponding to specified eigenvalues, using inverse
      !> iteration.
      !>
      !> The maximum number of iterations allowed for each eigenvector is
      !> specified by an internal parameter MAXITS (currently set to 5).
      !>

Parameters

  [in]

  N

      !>          N is INTEGER
      !>          The order of the matrix.  N >= 0.
      !>

  [in]

  D

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

  [in]

  E

      !>          E is DOUBLE PRECISION array, dimension (N-1)
      !>          The (n-1) subdiagonal elements of the tridiagonal matrix
      !>          T, in elements 1 to N-1.
      !>

  [in]

  M

      !>          M is INTEGER
      !>          The number of eigenvectors to be found.  0 <= M <= N.
      !>

  [in]

  W

      !>          W is DOUBLE PRECISION array, dimension (N)
      !>          The first M elements of W contain the eigenvalues for
      !>          which eigenvectors are to be computed.  The eigenvalues
      !>          should be grouped by split-off block and ordered from
      !>          smallest to largest within the block.  ( The output array
      !>          W from DSTEBZ with ORDER = 'B' is expected here. )
      !>

  [in]

  IBLOCK

      !>          IBLOCK is INTEGER array, dimension (N)
      !>          The submatrix indices associated with the corresponding
      !>          eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to
      !>          the first submatrix from the top, =2 if W(i) belongs to
      !>          the second submatrix, etc.  ( The output array IBLOCK
      !>          from DSTEBZ is expected here. )
      !>

  [in]

  ISPLIT

      !>          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.
      !>          ( The output array ISPLIT from DSTEBZ is expected here. )
      !>

  [out]

  Z

      !>          Z is DOUBLE PRECISION array, dimension (LDZ, M)
      !>          The computed eigenvectors.  The eigenvector associated
      !>          with the eigenvalue W(i) is stored in the i-th column of
      !>          Z.  Any vector which fails to converge is set to its current
      !>          iterate after MAXITS iterations.
      !>

  [in]

  LDZ

      !>          LDZ is INTEGER
      !>          The leading dimension of the array Z.  LDZ >= max(1,N).
      !>

  [out]

  WORK

      !>          WORK is DOUBLE PRECISION array, dimension (5*N)
      !>

  [out]

  IWORK

      !>          IWORK is INTEGER array, dimension (N)
      !>

  [out]

  IFAIL

      !>          IFAIL is INTEGER array, dimension (M)
      !>          On normal exit, all elements of IFAIL are zero.
      !>          If one or more eigenvectors fail to converge after
      !>          MAXITS iterations, then their indices are stored in
      !>          array IFAIL.
      !>

  [out]

  INFO

      !>          INFO is 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
      !>               in MAXITS iterations.  Their indices are stored in
      !>               array IFAIL.
      !>

Internal Parameters:

      !>  MAXITS  INTEGER, default = 5
      !>          The maximum number of iterations performed.
      !>
      !>  EXTRA   INTEGER, default = 2
      !>          The number of iterations performed after norm growth
      !>          criterion is satisfied, should be at least 1.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.