version 1.10, 2011/11/21 20:43:16
|
version 1.20, 2018/05/29 06:55:24
|
Line 1
|
Line 1
|
*> \brief \b ZLAQR5 |
*> \brief \b ZLAQR5 performs a single small-bulge multi-shift QR sweep. |
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download ZLAQR5 + dependencies |
*> Download ZLAQR5 + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlaqr5.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
Line 21
|
Line 21
|
* SUBROUTINE ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, |
* SUBROUTINE ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, |
* H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, |
* H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, |
* WV, LDWV, NH, WH, LDWH ) |
* WV, LDWV, NH, WH, LDWH ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, |
* INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, |
* $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV |
* $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV |
Line 31
|
Line 31
|
* COMPLEX*16 H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ), |
* COMPLEX*16 H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ), |
* $ WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * ) |
* $ WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 47
|
Line 47
|
* |
* |
*> \param[in] WANTT |
*> \param[in] WANTT |
*> \verbatim |
*> \verbatim |
*> WANTT is logical scalar |
*> WANTT is LOGICAL |
*> WANTT = .true. if the triangular Schur factor |
*> WANTT = .true. if the triangular Schur factor |
*> is being computed. WANTT is set to .false. otherwise. |
*> is being computed. WANTT is set to .false. otherwise. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] WANTZ |
*> \param[in] WANTZ |
*> \verbatim |
*> \verbatim |
*> WANTZ is logical scalar |
*> WANTZ is LOGICAL |
*> WANTZ = .true. if the unitary Schur factor is being |
*> WANTZ = .true. if the unitary Schur factor is being |
*> computed. WANTZ is set to .false. otherwise. |
*> computed. WANTZ is set to .false. otherwise. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] KACC22 |
*> \param[in] KACC22 |
*> \verbatim |
*> \verbatim |
*> KACC22 is integer with value 0, 1, or 2. |
*> KACC22 is INTEGER with value 0, 1, or 2. |
*> Specifies the computation mode of far-from-diagonal |
*> Specifies the computation mode of far-from-diagonal |
*> orthogonal updates. |
*> orthogonal updates. |
*> = 0: ZLAQR5 does not accumulate reflections and does not |
*> = 0: ZLAQR5 does not accumulate reflections and does not |
Line 77
|
Line 77
|
*> |
*> |
*> \param[in] N |
*> \param[in] N |
*> \verbatim |
*> \verbatim |
*> N is integer scalar |
*> N is INTEGER |
*> N is the order of the Hessenberg matrix H upon which this |
*> N is the order of the Hessenberg matrix H upon which this |
*> subroutine operates. |
*> subroutine operates. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] KTOP |
*> \param[in] KTOP |
*> \verbatim |
*> \verbatim |
*> KTOP is integer scalar |
*> KTOP is INTEGER |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] KBOT |
*> \param[in] KBOT |
*> \verbatim |
*> \verbatim |
*> KBOT is integer scalar |
*> KBOT is INTEGER |
*> These are the first and last rows and columns of an |
*> These are the first and last rows and columns of an |
*> isolated diagonal block upon which the QR sweep is to be |
*> isolated diagonal block upon which the QR sweep is to be |
*> applied. It is assumed without a check that |
*> applied. It is assumed without a check that |
Line 100
|
Line 100
|
*> |
*> |
*> \param[in] NSHFTS |
*> \param[in] NSHFTS |
*> \verbatim |
*> \verbatim |
*> NSHFTS is integer scalar |
*> NSHFTS is INTEGER |
*> NSHFTS gives the number of simultaneous shifts. NSHFTS |
*> NSHFTS gives the number of simultaneous shifts. NSHFTS |
*> must be positive and even. |
*> must be positive and even. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in,out] S |
*> \param[in,out] S |
*> \verbatim |
*> \verbatim |
*> S is COMPLEX*16 array of size (NSHFTS) |
*> S is COMPLEX*16 array, dimension (NSHFTS) |
*> S contains the shifts of origin that define the multi- |
*> S contains the shifts of origin that define the multi- |
*> shift QR sweep. On output S may be reordered. |
*> shift QR sweep. On output S may be reordered. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in,out] H |
*> \param[in,out] H |
*> \verbatim |
*> \verbatim |
*> H is COMPLEX*16 array of size (LDH,N) |
*> H is COMPLEX*16 array, dimension (LDH,N) |
*> On input H contains a Hessenberg matrix. On output a |
*> On input H contains a Hessenberg matrix. On output a |
*> multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied |
*> multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied |
*> to the isolated diagonal block in rows and columns KTOP |
*> to the isolated diagonal block in rows and columns KTOP |
Line 123
|
Line 123
|
*> |
*> |
*> \param[in] LDH |
*> \param[in] LDH |
*> \verbatim |
*> \verbatim |
*> LDH is integer scalar |
*> LDH is INTEGER |
*> LDH is the leading dimension of H just as declared in the |
*> LDH is the leading dimension of H just as declared in the |
*> calling procedure. LDH.GE.MAX(1,N). |
*> calling procedure. LDH.GE.MAX(1,N). |
*> \endverbatim |
*> \endverbatim |
Line 142
|
Line 142
|
*> |
*> |
*> \param[in,out] Z |
*> \param[in,out] Z |
*> \verbatim |
*> \verbatim |
*> Z is COMPLEX*16 array of size (LDZ,IHI) |
*> Z is COMPLEX*16 array, dimension (LDZ,IHIZ) |
*> If WANTZ = .TRUE., then the QR Sweep unitary |
*> If WANTZ = .TRUE., then the QR Sweep unitary |
*> similarity transformation is accumulated into |
*> similarity transformation is accumulated into |
*> Z(ILOZ:IHIZ,ILO:IHI) from the right. |
*> Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. |
*> If WANTZ = .FALSE., then Z is unreferenced. |
*> If WANTZ = .FALSE., then Z is unreferenced. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDZ |
*> \param[in] LDZ |
*> \verbatim |
*> \verbatim |
*> LDZ is integer scalar |
*> LDZ is INTEGER |
*> LDA is the leading dimension of Z just as declared in |
*> LDA is the leading dimension of Z just as declared in |
*> the calling procedure. LDZ.GE.N. |
*> the calling procedure. LDZ.GE.N. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[out] V |
*> \param[out] V |
*> \verbatim |
*> \verbatim |
*> V is COMPLEX*16 array of size (LDV,NSHFTS/2) |
*> V is COMPLEX*16 array, dimension (LDV,NSHFTS/2) |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDV |
*> \param[in] LDV |
*> \verbatim |
*> \verbatim |
*> LDV is integer scalar |
*> LDV is INTEGER |
*> LDV is the leading dimension of V as declared in the |
*> LDV is the leading dimension of V as declared in the |
*> calling procedure. LDV.GE.3. |
*> calling procedure. LDV.GE.3. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[out] U |
*> \param[out] U |
*> \verbatim |
*> \verbatim |
*> U is COMPLEX*16 array of size |
*> U is COMPLEX*16 array, dimension (LDU,3*NSHFTS-3) |
*> (LDU,3*NSHFTS-3) |
|
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDU |
*> \param[in] LDU |
*> \verbatim |
*> \verbatim |
*> LDU is integer scalar |
*> LDU is INTEGER |
*> LDU is the leading dimension of U just as declared in the |
*> LDU is the leading dimension of U just as declared in the |
*> in the calling subroutine. LDU.GE.3*NSHFTS-3. |
*> in the calling subroutine. LDU.GE.3*NSHFTS-3. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] NH |
*> \param[in] NH |
*> \verbatim |
*> \verbatim |
*> NH is integer scalar |
*> NH is INTEGER |
*> NH is the number of columns in array WH available for |
*> NH is the number of columns in array WH available for |
*> workspace. NH.GE.1. |
*> workspace. NH.GE.1. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[out] WH |
*> \param[out] WH |
*> \verbatim |
*> \verbatim |
*> WH is COMPLEX*16 array of size (LDWH,NH) |
*> WH is COMPLEX*16 array, dimension (LDWH,NH) |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDWH |
*> \param[in] LDWH |
*> \verbatim |
*> \verbatim |
*> LDWH is integer scalar |
*> LDWH is INTEGER |
*> Leading dimension of WH just as declared in the |
*> Leading dimension of WH just as declared in the |
*> calling procedure. LDWH.GE.3*NSHFTS-3. |
*> calling procedure. LDWH.GE.3*NSHFTS-3. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] NV |
*> \param[in] NV |
*> \verbatim |
*> \verbatim |
*> NV is integer scalar |
*> NV is INTEGER |
*> NV is the number of rows in WV agailable for workspace. |
*> NV is the number of rows in WV agailable for workspace. |
*> NV.GE.1. |
*> NV.GE.1. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[out] WV |
*> \param[out] WV |
*> \verbatim |
*> \verbatim |
*> WV is COMPLEX*16 array of size |
*> WV is COMPLEX*16 array, dimension (LDWV,3*NSHFTS-3) |
*> (LDWV,3*NSHFTS-3) |
|
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDWV |
*> \param[in] LDWV |
*> \verbatim |
*> \verbatim |
*> LDWV is integer scalar |
*> LDWV is INTEGER |
*> LDWV is the leading dimension of WV as declared in the |
*> LDWV is the leading dimension of WV as declared in the |
*> in the calling subroutine. LDWV.GE.NV. |
*> in the calling subroutine. LDWV.GE.NV. |
*> \endverbatim |
*> \endverbatim |
Line 223
|
Line 221
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date June 2016 |
* |
* |
*> \ingroup complex16OTHERauxiliary |
*> \ingroup complex16OTHERauxiliary |
* |
* |
Line 251
|
Line 249
|
$ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, |
$ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, |
$ WV, LDWV, NH, WH, LDWH ) |
$ WV, LDWV, NH, WH, LDWH ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.0) -- |
* -- LAPACK auxiliary routine (version 3.7.1) -- |
* -- 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..-- |
* November 2011 |
* June 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, |
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, |