--- 
:name: slahqr
:md5sum: 5cbfbd1abeed40e4a90c345cdab7c428
:category: :subroutine
:arguments: 
- wantt: 
    :type: logical
    :intent: input
- wantz: 
    :type: logical
    :intent: input
- n: 
    :type: integer
    :intent: input
- ilo: 
    :type: integer
    :intent: input
- ihi: 
    :type: integer
    :intent: input
- h: 
    :type: real
    :intent: input/output
    :dims: 
    - ldh
    - n
- ldh: 
    :type: integer
    :intent: input
- wr: 
    :type: real
    :intent: output
    :dims: 
    - n
- wi: 
    :type: real
    :intent: output
    :dims: 
    - n
- iloz: 
    :type: integer
    :intent: input
- ihiz: 
    :type: integer
    :intent: input
- z: 
    :type: real
    :intent: input/output
    :dims: 
    - "wantz ? ldz : 0"
    - "wantz ? n : 0"
- ldz: 
    :type: integer
    :intent: input
- info: 
    :type: integer
    :intent: output
:substitutions: {}

:fortran_help: "      SUBROUTINE SLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, INFO )\n\n\
  *     Purpose\n\
  *     =======\n\
  *\n\
  *     SLAHQR is an auxiliary routine called by SHSEQR to update the\n\
  *     eigenvalues and Schur decomposition already computed by SHSEQR, by\n\
  *     dealing with the Hessenberg submatrix in rows and columns ILO to\n\
  *     IHI.\n\
  *\n\n\
  *     Arguments\n\
  *     =========\n\
  *\n\
  *     WANTT   (input) LOGICAL\n\
  *          = .TRUE. : the full Schur form T is required;\n\
  *          = .FALSE.: only eigenvalues are required.\n\
  *\n\
  *     WANTZ   (input) LOGICAL\n\
  *          = .TRUE. : the matrix of Schur vectors Z is required;\n\
  *          = .FALSE.: Schur vectors are not required.\n\
  *\n\
  *     N       (input) INTEGER\n\
  *          The order of the matrix H.  N >= 0.\n\
  *\n\
  *     ILO     (input) INTEGER\n\
  *     IHI     (input) INTEGER\n\
  *          It is assumed that H is already upper quasi-triangular in\n\
  *          rows and columns IHI+1:N, and that H(ILO,ILO-1) = 0 (unless\n\
  *          ILO = 1). SLAHQR works primarily with the Hessenberg\n\
  *          submatrix in rows and columns ILO to IHI, but applies\n\
  *          transformations to all of H if WANTT is .TRUE..\n\
  *          1 <= ILO <= max(1,IHI); IHI <= N.\n\
  *\n\
  *     H       (input/output) REAL array, dimension (LDH,N)\n\
  *          On entry, the upper Hessenberg matrix H.\n\
  *          On exit, if INFO is zero and if WANTT is .TRUE., H is upper\n\
  *          quasi-triangular in rows and columns ILO:IHI, with any\n\
  *          2-by-2 diagonal blocks in standard form. If INFO is zero\n\
  *          and WANTT is .FALSE., the contents of H are unspecified on\n\
  *          exit.  The output state of H if INFO is nonzero is given\n\
  *          below under the description of INFO.\n\
  *\n\
  *     LDH     (input) INTEGER\n\
  *          The leading dimension of the array H. LDH >= max(1,N).\n\
  *\n\
  *     WR      (output) REAL array, dimension (N)\n\
  *     WI      (output) REAL array, dimension (N)\n\
  *          The real and imaginary parts, respectively, of the computed\n\
  *          eigenvalues ILO to IHI are stored in the corresponding\n\
  *          elements of WR and WI. If two eigenvalues are computed as a\n\
  *          complex conjugate pair, they are stored in consecutive\n\
  *          elements of WR and WI, say the i-th and (i+1)th, with\n\
  *          WI(i) > 0 and WI(i+1) < 0. If WANTT is .TRUE., the\n\
  *          eigenvalues are stored in the same order as on the diagonal\n\
  *          of the Schur form returned in H, with WR(i) = H(i,i), and, if\n\
  *          H(i:i+1,i:i+1) is a 2-by-2 diagonal block,\n\
  *          WI(i) = sqrt(H(i+1,i)*H(i,i+1)) and WI(i+1) = -WI(i).\n\
  *\n\
  *     ILOZ    (input) INTEGER\n\
  *     IHIZ    (input) INTEGER\n\
  *          Specify the rows of Z to which transformations must be\n\
  *          applied if WANTZ is .TRUE..\n\
  *          1 <= ILOZ <= ILO; IHI <= IHIZ <= N.\n\
  *\n\
  *     Z       (input/output) REAL array, dimension (LDZ,N)\n\
  *          If WANTZ is .TRUE., on entry Z must contain the current\n\
  *          matrix Z of transformations accumulated by SHSEQR, and on\n\
  *          exit Z has been updated; transformations are applied only to\n\
  *          the submatrix Z(ILOZ:IHIZ,ILO:IHI).\n\
  *          If WANTZ is .FALSE., Z is not referenced.\n\
  *\n\
  *     LDZ     (input) INTEGER\n\
  *          The leading dimension of the array Z. LDZ >= max(1,N).\n\
  *\n\
  *     INFO    (output) INTEGER\n\
  *           =   0: successful exit\n\
  *          .GT. 0: If INFO = i, SLAHQR failed to compute all the\n\
  *                  eigenvalues ILO to IHI in a total of 30 iterations\n\
  *                  per eigenvalue; elements i+1:ihi of WR and WI\n\
  *                  contain those eigenvalues which have been\n\
  *                  successfully computed.\n\
  *\n\
  *                  If INFO .GT. 0 and WANTT is .FALSE., then on exit,\n\
  *                  the remaining unconverged eigenvalues are the\n\
  *                  eigenvalues of the upper Hessenberg matrix rows\n\
  *                  and columns ILO thorugh INFO of the final, output\n\
  *                  value of H.\n\
  *\n\
  *                  If INFO .GT. 0 and WANTT is .TRUE., then on exit\n\
  *          (*)       (initial value of H)*U  = U*(final value of H)\n\
  *                  where U is an orthognal matrix.    The final\n\
  *                  value of H is upper Hessenberg and triangular in\n\
  *                  rows and columns INFO+1 through IHI.\n\
  *\n\
  *                  If INFO .GT. 0 and WANTZ is .TRUE., then on exit\n\
  *                      (final value of Z)  = (initial value of Z)*U\n\
  *                  where U is the orthogonal matrix in (*)\n\
  *                  (regardless of the value of WANTT.)\n\
  *\n\n\
  *     Further Details\n\
  *     ===============\n\
  *\n\
  *     02-96 Based on modifications by\n\
  *     David Day, Sandia National Laboratory, USA\n\
  *\n\
  *     12-04 Further modifications by\n\
  *     Ralph Byers, University of Kansas, USA\n\
  *     This is a modified version of SLAHQR from LAPACK version 3.0.\n\
  *     It is (1) more robust against overflow and underflow and\n\
  *     (2) adopts the more conservative Ahues & Tisseur stopping\n\
  *     criterion (LAWN 122, 1997).\n\
  *\n\
  *     =========================================================\n\
  *\n"
