--- 
:name: cstein
:md5sum: 738c45b1cce1bfa88f60e473bd396273
:category: :subroutine
:arguments: 
- n: 
    :type: integer
    :intent: input
- d: 
    :type: real
    :intent: input
    :dims: 
    - n
- e: 
    :type: real
    :intent: input
    :dims: 
    - n-1
- m: 
    :type: integer
    :intent: input
- w: 
    :type: real
    :intent: input
    :dims: 
    - n
- iblock: 
    :type: integer
    :intent: input
    :dims: 
    - n
- isplit: 
    :type: integer
    :intent: input
    :dims: 
    - n
- z: 
    :type: complex
    :intent: output
    :dims: 
    - ldz
    - m
- ldz: 
    :type: integer
    :intent: input
- work: 
    :type: real
    :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 CSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  CSTEIN 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\
  *  Although the eigenvectors are real, they are stored in a complex\n\
  *  array, which may be passed to CUNMTR or CUPMTR for back\n\
  *  transformation to the eigenvectors of a complex Hermitian matrix\n\
  *  which was reduced to tridiagonal form.\n\
  *\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  N       (input) INTEGER\n\
  *          The order of the matrix.  N >= 0.\n\
  *\n\
  *  D       (input) REAL array, dimension (N)\n\
  *          The n diagonal elements of the tridiagonal matrix T.\n\
  *\n\
  *  E       (input) REAL array, dimension (N-1)\n\
  *          The (n-1) subdiagonal elements of the tridiagonal matrix\n\
  *          T, stored 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) REAL 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 SSTEBZ 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 SSTEBZ 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 SSTEBZ is expected here. )\n\
  *\n\
  *  Z       (output) COMPLEX 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\
  *          The imaginary parts of the eigenvectors are set to zero.\n\
  *\n\
  *  LDZ     (input) INTEGER\n\
  *          The leading dimension of the array Z.  LDZ >= max(1,N).\n\
  *\n\
  *  WORK    (workspace) REAL 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"
