--- 
:name: dstein
:md5sum: 632e25e87ef78ec30feecb369f890ec1
:category: :subroutine
:arguments: 
- n: 
    :type: integer
    :intent: input
- d: 
    :type: doublereal
    :intent: input
    :dims: 
    - n
- e: 
    :type: doublereal
    :intent: input
    :dims: 
    - n-1
- m: 
    :type: integer
    :intent: input
- w: 
    :type: doublereal
    :intent: input
    :dims: 
    - n
- iblock: 
    :type: integer
    :intent: input
    :dims: 
    - n
- isplit: 
    :type: integer
    :intent: input
    :dims: 
    - n
- z: 
    :type: doublereal
    :intent: output
    :dims: 
    - ldz
    - m
- ldz: 
    :type: integer
    :intent: input
- work: 
    :type: doublereal
    :intent: workspace
    :dims: 
    - 5*n
- iwork: 
    :type: integer
    :intent: workspace
    :dims: 
    - n
- ifail: 
    :type: integer
    :intent: output
    :dims: 
    - m
- info: 
    :type: integer
    :intent: output
:substitutions: 
  ldz: MAX(1,n)
  m: n
:fortran_help: "      SUBROUTINE DSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  DSTEIN computes the eigenvectors of a real symmetric tridiagonal\n\
  *  matrix T corresponding to specified eigenvalues, using inverse\n\
  *  iteration.\n\
  *\n\
  *  The maximum number of iterations allowed for each eigenvector is\n\
  *  specified by an internal parameter MAXITS (currently set to 5).\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  N       (input) INTEGER\n\
  *          The order of the matrix.  N >= 0.\n\
  *\n\
  *  D       (input) DOUBLE PRECISION array, dimension (N)\n\
  *          The n diagonal elements of the tridiagonal matrix T.\n\
  *\n\
  *  E       (input) DOUBLE PRECISION array, dimension (N-1)\n\
  *          The (n-1) subdiagonal elements of the tridiagonal matrix\n\
  *          T, in elements 1 to N-1.\n\
  *\n\
  *  M       (input) INTEGER\n\
  *          The number of eigenvectors to be found.  0 <= M <= N.\n\
  *\n\
  *  W       (input) DOUBLE PRECISION array, dimension (N)\n\
  *          The first M elements of W contain the eigenvalues for\n\
  *          which eigenvectors are to be computed.  The eigenvalues\n\
  *          should be grouped by split-off block and ordered from\n\
  *          smallest to largest within the block.  ( The output array\n\
  *          W from DSTEBZ with ORDER = 'B' is expected here. )\n\
  *\n\
  *  IBLOCK  (input) INTEGER array, dimension (N)\n\
  *          The submatrix indices associated with the corresponding\n\
  *          eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to\n\
  *          the first submatrix from the top, =2 if W(i) belongs to\n\
  *          the second submatrix, etc.  ( The output array IBLOCK\n\
  *          from DSTEBZ is expected here. )\n\
  *\n\
  *  ISPLIT  (input) INTEGER array, dimension (N)\n\
  *          The splitting points, at which T breaks up into submatrices.\n\
  *          The first submatrix consists of rows/columns 1 to\n\
  *          ISPLIT( 1 ), the second of rows/columns ISPLIT( 1 )+1\n\
  *          through ISPLIT( 2 ), etc.\n\
  *          ( The output array ISPLIT from DSTEBZ is expected here. )\n\
  *\n\
  *  Z       (output) DOUBLE PRECISION array, dimension (LDZ, M)\n\
  *          The computed eigenvectors.  The eigenvector associated\n\
  *          with the eigenvalue W(i) is stored in the i-th column of\n\
  *          Z.  Any vector which fails to converge is set to its current\n\
  *          iterate after MAXITS iterations.\n\
  *\n\
  *  LDZ     (input) INTEGER\n\
  *          The leading dimension of the array Z.  LDZ >= max(1,N).\n\
  *\n\
  *  WORK    (workspace) DOUBLE PRECISION array, dimension (5*N)\n\
  *\n\
  *  IWORK   (workspace) INTEGER array, dimension (N)\n\
  *\n\
  *  IFAIL   (output) INTEGER array, dimension (M)\n\
  *          On normal exit, all elements of IFAIL are zero.\n\
  *          If one or more eigenvectors fail to converge after\n\
  *          MAXITS iterations, then their indices are stored in\n\
  *          array IFAIL.\n\
  *\n\
  *  INFO    (output) INTEGER\n\
  *          = 0: successful exit.\n\
  *          < 0: if INFO = -i, the i-th argument had an illegal value\n\
  *          > 0: if INFO = i, then i eigenvectors failed to converge\n\
  *               in MAXITS iterations.  Their indices are stored in\n\
  *               array IFAIL.\n\
  *\n\
  *  Internal Parameters\n\
  *  ===================\n\
  *\n\
  *  MAXITS  INTEGER, default = 5\n\
  *          The maximum number of iterations performed.\n\
  *\n\
  *  EXTRA   INTEGER, default = 2\n\
  *          The number of iterations performed after norm growth\n\
  *          criterion is satisfied, should be at least 1.\n\
  *\n\n\
  *  =====================================================================\n\
  *\n"
