Diff for /rpl/lapack/lapack/dhseqr.f between versions 1.17 and 1.18

version 1.17, 2018/05/29 07:17:54 version 1.18, 2020/05/21 21:45:57
Line 70 Line 70
 *> \param[in] N  *> \param[in] N
 *> \verbatim  *> \verbatim
 *>          N is INTEGER  *>          N is INTEGER
 *>           The order of the matrix H.  N .GE. 0.  *>           The order of the matrix H.  N >= 0.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] ILO  *> \param[in] ILO
Line 87 Line 87
 *>           set by a previous call to DGEBAL, and then passed to ZGEHRD  *>           set by a previous call to DGEBAL, and then passed to ZGEHRD
 *>           when the matrix output by DGEBAL is reduced to Hessenberg  *>           when the matrix output by DGEBAL is reduced to Hessenberg
 *>           form. Otherwise ILO and IHI should be set to 1 and N  *>           form. Otherwise ILO and IHI should be set to 1 and N
 *>           respectively.  If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.  *>           respectively.  If N > 0, then 1 <= ILO <= IHI <= N.
 *>           If N = 0, then ILO = 1 and IHI = 0.  *>           If N = 0, then ILO = 1 and IHI = 0.
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 100 Line 100
 *>           (the Schur form); 2-by-2 diagonal blocks (corresponding to  *>           (the Schur form); 2-by-2 diagonal blocks (corresponding to
 *>           complex conjugate pairs of eigenvalues) are returned in  *>           complex conjugate pairs of eigenvalues) are returned in
 *>           standard form, with H(i,i) = H(i+1,i+1) and  *>           standard form, with H(i,i) = H(i+1,i+1) and
 *>           H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and JOB = 'E', the  *>           H(i+1,i)*H(i,i+1) < 0. If INFO = 0 and JOB = 'E', the
 *>           contents of H are unspecified on exit.  (The output value of  *>           contents of H are unspecified on exit.  (The output value of
 *>           H when INFO.GT.0 is given under the description of INFO  *>           H when INFO > 0 is given under the description of INFO
 *>           below.)  *>           below.)
 *>  *>
 *>           Unlike earlier versions of DHSEQR, this subroutine may  *>           Unlike earlier versions of DHSEQR, this subroutine may
 *>           explicitly H(i,j) = 0 for i.GT.j and j = 1, 2, ... ILO-1  *>           explicitly H(i,j) = 0 for i > j and j = 1, 2, ... ILO-1
 *>           or j = IHI+1, IHI+2, ... N.  *>           or j = IHI+1, IHI+2, ... N.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] LDH  *> \param[in] LDH
 *> \verbatim  *> \verbatim
 *>          LDH is INTEGER  *>          LDH is INTEGER
 *>           The leading dimension of the array H. LDH .GE. max(1,N).  *>           The leading dimension of the array H. LDH >= max(1,N).
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[out] WR  *> \param[out] WR
Line 128 Line 128
 *>           The real and imaginary parts, respectively, of the computed  *>           The real and imaginary parts, respectively, of the computed
 *>           eigenvalues. If two eigenvalues are computed as a complex  *>           eigenvalues. If two eigenvalues are computed as a complex
 *>           conjugate pair, they are stored in consecutive elements of  *>           conjugate pair, they are stored in consecutive elements of
 *>           WR and WI, say the i-th and (i+1)th, with WI(i) .GT. 0 and  *>           WR and WI, say the i-th and (i+1)th, with WI(i) > 0 and
 *>           WI(i+1) .LT. 0. If JOB = 'S', the eigenvalues are stored in  *>           WI(i+1) < 0. If JOB = 'S', the eigenvalues are stored in
 *>           the same order as on the diagonal of the Schur form returned  *>           the same order as on the diagonal of the Schur form returned
 *>           in H, with WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2  *>           in H, with WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2
 *>           diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and  *>           diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
Line 148 Line 148
 *>           if INFO = 0, Z contains Q*Z.  *>           if INFO = 0, Z contains Q*Z.
 *>           Normally Q is the orthogonal matrix generated by DORGHR  *>           Normally Q is the orthogonal matrix generated by DORGHR
 *>           after the call to DGEHRD which formed the Hessenberg matrix  *>           after the call to DGEHRD which formed the Hessenberg matrix
 *>           H. (The output value of Z when INFO.GT.0 is given under  *>           H. (The output value of Z when INFO > 0 is given under
 *>           the description of INFO below.)  *>           the description of INFO below.)
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 156 Line 156
 *> \verbatim  *> \verbatim
 *>          LDZ is INTEGER  *>          LDZ is INTEGER
 *>           The leading dimension of the array Z.  if COMPZ = 'I' or  *>           The leading dimension of the array Z.  if COMPZ = 'I' or
 *>           COMPZ = 'V', then LDZ.GE.MAX(1,N).  Otherwize, LDZ.GE.1.  *>           COMPZ = 'V', then LDZ >= MAX(1,N).  Otherwise, LDZ >= 1.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[out] WORK  *> \param[out] WORK
Line 169 Line 169
 *> \param[in] LWORK  *> \param[in] LWORK
 *> \verbatim  *> \verbatim
 *>          LWORK is INTEGER  *>          LWORK is INTEGER
 *>           The dimension of the array WORK.  LWORK .GE. max(1,N)  *>           The dimension of the array WORK.  LWORK >= max(1,N)
 *>           is sufficient and delivers very good and sometimes  *>           is sufficient and delivers very good and sometimes
 *>           optimal performance.  However, LWORK as large as 11*N  *>           optimal performance.  However, LWORK as large as 11*N
 *>           may be required for optimal performance.  A workspace  *>           may be required for optimal performance.  A workspace
Line 187 Line 187
 *> \param[out] INFO  *> \param[out] INFO
 *> \verbatim  *> \verbatim
 *>          INFO is INTEGER  *>          INFO is INTEGER
 *>             =  0:  successful exit  *>             = 0:  successful exit
 *>           .LT. 0:  if INFO = -i, the i-th argument had an illegal  *>             < 0:  if INFO = -i, the i-th argument had an illegal
 *>                    value  *>                    value
 *>           .GT. 0:  if INFO = i, DHSEQR failed to compute all of  *>             > 0:  if INFO = i, DHSEQR failed to compute all of
 *>                the eigenvalues.  Elements 1:ilo-1 and i+1:n of WR  *>                the eigenvalues.  Elements 1:ilo-1 and i+1:n of WR
 *>                and WI contain those eigenvalues which have been  *>                and WI contain those eigenvalues which have been
 *>                successfully computed.  (Failures are rare.)  *>                successfully computed.  (Failures are rare.)
 *>  *>
 *>                If INFO .GT. 0 and JOB = 'E', then on exit, the  *>                If INFO > 0 and JOB = 'E', then on exit, the
 *>                remaining unconverged eigenvalues are the eigen-  *>                remaining unconverged eigenvalues are the eigen-
 *>                values of the upper Hessenberg matrix rows and  *>                values of the upper Hessenberg matrix rows and
 *>                columns ILO through INFO of the final, output  *>                columns ILO through INFO of the final, output
 *>                value of H.  *>                value of H.
 *>  *>
 *>                If INFO .GT. 0 and JOB   = 'S', then on exit  *>                If INFO > 0 and JOB   = 'S', then on exit
 *>  *>
 *>           (*)  (initial value of H)*U  = U*(final value of H)  *>           (*)  (initial value of H)*U  = U*(final value of H)
 *>  *>
Line 209 Line 209
 *>                value of H is upper Hessenberg and quasi-triangular  *>                value of H is upper Hessenberg and quasi-triangular
 *>                in rows and columns INFO+1 through IHI.  *>                in rows and columns INFO+1 through IHI.
 *>  *>
 *>                If INFO .GT. 0 and COMPZ = 'V', then on exit  *>                If INFO > 0 and COMPZ = 'V', then on exit
 *>  *>
 *>                  (final value of Z)  =  (initial value of Z)*U  *>                  (final value of Z)  =  (initial value of Z)*U
 *>  *>
 *>                where U is the orthogonal matrix in (*) (regard-  *>                where U is the orthogonal matrix in (*) (regard-
 *>                less of the value of JOB.)  *>                less of the value of JOB.)
 *>  *>
 *>                If INFO .GT. 0 and COMPZ = 'I', then on exit  *>                If INFO > 0 and COMPZ = 'I', then on exit
 *>                      (final value of Z)  = U  *>                      (final value of Z)  = U
 *>                where U is the orthogonal matrix in (*) (regard-  *>                where U is the orthogonal matrix in (*) (regard-
 *>                less of the value of JOB.)  *>                less of the value of JOB.)
 *>  *>
 *>                If INFO .GT. 0 and COMPZ = 'N', then Z is not  *>                If INFO > 0 and COMPZ = 'N', then Z is not
 *>                accessed.  *>                accessed.
 *> \endverbatim  *> \endverbatim
 *  *
Line 261 Line 261
 *>                      This depends on ILO, IHI and NS.  NS is the  *>                      This depends on ILO, IHI and NS.  NS is the
 *>                      number of simultaneous shifts returned  *>                      number of simultaneous shifts returned
 *>                      by ILAENV(ISPEC=15).  (See ISPEC=15 below.)  *>                      by ILAENV(ISPEC=15).  (See ISPEC=15 below.)
 *>                      The default for (IHI-ILO+1).LE.500 is NS.  *>                      The default for (IHI-ILO+1) <= 500 is NS.
 *>                      The default for (IHI-ILO+1).GT.500 is 3*NS/2.  *>                      The default for (IHI-ILO+1) >  500 is 3*NS/2.
 *>  *>
 *>            ISPEC=14: Nibble crossover point. (See IPARMQ for  *>            ISPEC=14: Nibble crossover point. (See IPARMQ for
 *>                      details.)  Default: 14% of deflation window  *>                      details.)  Default: 14% of deflation window
Line 341 Line 341
       PARAMETER          ( NTINY = 11 )        PARAMETER          ( NTINY = 11 )
 *  *
 *     ==== NL allocates some local workspace to help small matrices  *     ==== NL allocates some local workspace to help small matrices
 *     .    through a rare DLAHQR failure.  NL .GT. NTINY = 11 is  *     .    through a rare DLAHQR failure.  NL > NTINY = 11 is
 *     .    required and NL .LE. NMIN = ILAENV(ISPEC=12,...) is recom-  *     .    required and NL <= NMIN = ILAENV(ISPEC=12,...) is recom-
 *     .    mended.  (The default value of NMIN is 75.)  Using NL = 49  *     .    mended.  (The default value of NMIN is 75.)  Using NL = 49
 *     .    allows up to six simultaneous shifts and a 16-by-16  *     .    allows up to six simultaneous shifts and a 16-by-16
 *     .    deflation window.  ====  *     .    deflation window.  ====

Removed from v.1.17  
changed lines
  Added in v.1.18


CVSweb interface <joel.bertrand@systella.fr>