version 1.18, 2018/05/29 07:18:22
|
version 1.19, 2020/05/21 21:46:06
|
Line 69
|
Line 69
|
*> \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 86
|
Line 86
|
*> set by a previous call to ZGEBAL, and then passed to ZGEHRD |
*> set by a previous call to ZGEBAL, and then passed to ZGEHRD |
*> when the matrix output by ZGEBAL is reduced to Hessenberg |
*> when the matrix output by ZGEBAL 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 98
|
Line 98
|
*> triangular matrix T from the Schur decomposition (the |
*> triangular matrix T from the Schur decomposition (the |
*> Schur form). If INFO = 0 and JOB = 'E', the contents of |
*> Schur form). If INFO = 0 and JOB = 'E', the contents of |
*> H are unspecified on exit. (The output value of H when |
*> H are unspecified on exit. (The output value of H when |
*> INFO.GT.0 is given under the description of INFO below.) |
*> INFO > 0 is given under the description of INFO below.) |
*> |
*> |
*> Unlike earlier versions of ZHSEQR, this subroutine may |
*> Unlike earlier versions of ZHSEQR, 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] W |
*> \param[out] W |
Line 131
|
Line 131
|
*> if INFO = 0, Z contains Q*Z. |
*> if INFO = 0, Z contains Q*Z. |
*> Normally Q is the unitary matrix generated by ZUNGHR |
*> Normally Q is the unitary matrix generated by ZUNGHR |
*> after the call to ZGEHRD which formed the Hessenberg matrix |
*> after the call to ZGEHRD 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 139
|
Line 139
|
*> \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 152
|
Line 152
|
*> \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 170
|
Line 170
|
*> \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, ZHSEQR failed to compute all of |
*> > 0: if INFO = i, ZHSEQR 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 W |
*> and WI contain those eigenvalues which have been |
*> 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 192
|
Line 192
|
*> value of H is upper Hessenberg and triangular in |
*> value of H is upper Hessenberg and triangular in |
*> rows and columns INFO+1 through IHI. |
*> 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 unitary matrix in (*) (regard- |
*> where U is the unitary 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 unitary matrix in (*) (regard- |
*> where U is the unitary 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 244
|
Line 244
|
*> 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 323
|
Line 323
|
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 ZLAHQR failure. NL .GT. NTINY = 11 is |
* . through a rare ZLAHQR 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. ==== |