LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine dlaqr3 | ( | logical | wantt, |
logical | wantz, | ||
integer | n, | ||
integer | ktop, | ||
integer | kbot, | ||
integer | nw, | ||
double precision, dimension( ldh, * ) | h, | ||
integer | ldh, | ||
integer | iloz, | ||
integer | ihiz, | ||
double precision, dimension( ldz, * ) | z, | ||
integer | ldz, | ||
integer | ns, | ||
integer | nd, | ||
double precision, dimension( * ) | sr, | ||
double precision, dimension( * ) | si, | ||
double precision, dimension( ldv, * ) | v, | ||
integer | ldv, | ||
integer | nh, | ||
double precision, dimension( ldt, * ) | t, | ||
integer | ldt, | ||
integer | nv, | ||
double precision, dimension( ldwv, * ) | wv, | ||
integer | ldwv, | ||
double precision, dimension( * ) | work, | ||
integer | lwork ) |
DLAQR3 performs the orthogonal similarity transformation of a Hessenberg matrix to detect and deflate fully converged eigenvalues from a trailing principal submatrix (aggressive early deflation).
Download DLAQR3 + dependencies [TGZ] [ZIP] [TXT]
!> !> Aggressive early deflation: !> !> DLAQR3 accepts as input an upper Hessenberg matrix !> H and performs an orthogonal similarity transformation !> designed to detect and deflate fully converged eigenvalues from !> a trailing principal submatrix. On output H has been over- !> written by a new Hessenberg matrix that is a perturbation of !> an orthogonal similarity transformation of H. It is to be !> hoped that the final version of H has many zero subdiagonal !> entries. !>
[in] | WANTT | !> WANTT is LOGICAL !> If .TRUE., then the Hessenberg matrix H is fully updated !> so that the quasi-triangular Schur factor may be !> computed (in cooperation with the calling subroutine). !> If .FALSE., then only enough of H is updated to preserve !> the eigenvalues. !> |
[in] | WANTZ | !> WANTZ is LOGICAL !> If .TRUE., then the orthogonal matrix Z is updated so !> so that the orthogonal Schur factor may be computed !> (in cooperation with the calling subroutine). !> If .FALSE., then Z is not referenced. !> |
[in] | N | !> N is INTEGER !> The order of the matrix H and (if WANTZ is .TRUE.) the !> order of the orthogonal matrix Z. !> |
[in] | KTOP | !> KTOP is INTEGER !> It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0. !> KBOT and KTOP together determine an isolated block !> along the diagonal of the Hessenberg matrix. !> |
[in] | KBOT | !> KBOT is INTEGER !> It is assumed without a check that either !> KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together !> determine an isolated block along the diagonal of the !> Hessenberg matrix. !> |
[in] | NW | !> NW is INTEGER !> Deflation window size. 1 <= NW <= (KBOT-KTOP+1). !> |
[in,out] | H | !> H is DOUBLE PRECISION array, dimension (LDH,N) !> On input the initial N-by-N section of H stores the !> Hessenberg matrix undergoing aggressive early deflation. !> On output H has been transformed by an orthogonal !> similarity transformation, perturbed, and the returned !> to Hessenberg form that (it is to be hoped) has some !> zero subdiagonal entries. !> |
[in] | LDH | !> LDH is INTEGER !> Leading dimension of H just as declared in the calling !> subroutine. N <= LDH !> |
[in] | ILOZ | !> ILOZ is INTEGER !> |
[in] | IHIZ | !> IHIZ is INTEGER !> Specify the rows of Z to which transformations must be !> applied if WANTZ is .TRUE.. 1 <= ILOZ <= IHIZ <= N. !> |
[in,out] | Z | !> Z is DOUBLE PRECISION array, dimension (LDZ,N) !> IF WANTZ is .TRUE., then on output, the orthogonal !> similarity transformation mentioned above has been !> accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. !> If WANTZ is .FALSE., then Z is unreferenced. !> |
[in] | LDZ | !> LDZ is INTEGER !> The leading dimension of Z just as declared in the !> calling subroutine. 1 <= LDZ. !> |
[out] | NS | !> NS is INTEGER !> The number of unconverged (ie approximate) eigenvalues !> returned in SR and SI that may be used as shifts by the !> calling subroutine. !> |
[out] | ND | !> ND is INTEGER !> The number of converged eigenvalues uncovered by this !> subroutine. !> |
[out] | SR | !> SR is DOUBLE PRECISION array, dimension (KBOT) !> |
[out] | SI | !> SI is DOUBLE PRECISION array, dimension (KBOT) !> On output, the real and imaginary parts of approximate !> eigenvalues that may be used for shifts are stored in !> SR(KBOT-ND-NS+1) through SR(KBOT-ND) and !> SI(KBOT-ND-NS+1) through SI(KBOT-ND), respectively. !> The real and imaginary parts of converged eigenvalues !> are stored in SR(KBOT-ND+1) through SR(KBOT) and !> SI(KBOT-ND+1) through SI(KBOT), respectively. !> |
[out] | V | !> V is DOUBLE PRECISION array, dimension (LDV,NW) !> An NW-by-NW work array. !> |
[in] | LDV | !> LDV is INTEGER !> The leading dimension of V just as declared in the !> calling subroutine. NW <= LDV !> |
[in] | NH | !> NH is INTEGER !> The number of columns of T. NH >= NW. !> |
[out] | T | !> T is DOUBLE PRECISION array, dimension (LDT,NW) !> |
[in] | LDT | !> LDT is INTEGER !> The leading dimension of T just as declared in the !> calling subroutine. NW <= LDT !> |
[in] | NV | !> NV is INTEGER !> The number of rows of work array WV available for !> workspace. NV >= NW. !> |
[out] | WV | !> WV is DOUBLE PRECISION array, dimension (LDWV,NW) !> |
[in] | LDWV | !> LDWV is INTEGER !> The leading dimension of W just as declared in the !> calling subroutine. NW <= LDV !> |
[out] | WORK | !> WORK is DOUBLE PRECISION array, dimension (LWORK) !> On exit, WORK(1) is set to an estimate of the optimal value !> of LWORK for the given values of N, NW, KTOP and KBOT. !> |
[in] | LWORK | !> LWORK is INTEGER !> The dimension of the work array WORK. LWORK = 2*NW !> suffices, but greater efficiency may result from larger !> values of LWORK. !> !> If LWORK = -1, then a workspace query is assumed; DLAQR3 !> only estimates the optimal workspace size for the given !> values of N, NW, KTOP and KBOT. The estimate is returned !> in WORK(1). No error message related to LWORK is issued !> by XERBLA. Neither H nor Z are accessed. !> |
Definition at line 270 of file dlaqr3.f.