version 1.17, 2017/06/17 11:06:50
|
version 1.20, 2023/08/07 08:39:27
|
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 216
|
Line 216
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date December 2016 |
|
* |
|
*> \ingroup complex16OTHERcomputational |
*> \ingroup complex16OTHERcomputational |
* |
* |
*> \par Contributors: |
*> \par Contributors: |
Line 244
|
Line 242
|
*> 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 299
|
Line 297
|
SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, |
SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, |
$ WORK, LWORK, INFO ) |
$ WORK, LWORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.7.0) -- |
* -- LAPACK computational routine -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* December 2016 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N |
INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N |
Line 320
|
Line 317
|
* . ZLAHQR because of insufficient subdiagonal scratch space. |
* . ZLAHQR because of insufficient subdiagonal scratch space. |
* . (This is a hard limit.) ==== |
* . (This is a hard limit.) ==== |
INTEGER NTINY |
INTEGER NTINY |
PARAMETER ( NTINY = 11 ) |
PARAMETER ( NTINY = 15 ) |
* |
* |
* ==== 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 = 15 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. ==== |