laqr5(3)

πŸŽ€ NAME πŸŽ€

hiii bestie, welcome to laqr5(3) πŸ’… β€” this is the library page for laqr5, and the entire pitch is literally laqr5: step in hseqr ✨. That's it, that's the name, that's the vibe. What you actually get inside is the four-routine squad β€” claqr5, dlaqr5, slaqr5 and zlaqr5 β€” all doing the exact same little dance in different precisions and number flavours. πŸ¦‹


πŸ¦‹ SYNOPSIS πŸ¦‹

✨ Functions ✨

πŸ’œ claqr5

subroutine claqr5 (wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h,
    ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)

CLAQR5 performs a single small-bulge multi-shift QR sweep. no cap, that's the whole job 🫢

πŸ’™ dlaqr5

subroutine dlaqr5 (wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si,
    h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh,
    ldwh)

DLAQR5 performs a single small-bulge multi-shift QR sweep. same energy, double precision πŸŽ€

πŸ’š slaqr5

subroutine slaqr5 (wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si,
    h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh,
    ldwh)

SLAQR5 performs a single small-bulge multi-shift QR sweep. single precision girlie 🌸

🧑 zlaqr5

subroutine zlaqr5 (wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h,
    ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)

ZLAQR5 performs a single small-bulge multi-shift QR sweep. complex*16 main character energy πŸ‘‘


🌈 Detailed Description 🌈

ok so this section is literally empty in the source page 😭 β€” the heading is there, the content is not. We respect the void. Moving on, diva. πŸ’€


πŸ’– Function Documentation πŸ’–

🌟 subroutine claqr5 🌟

subroutine claqr5 (logical wantt, logical wantz, integer kacc22, integer n,
    integer ktop, integer kbot, integer nshfts, complex, dimension( * ) s,
    complex, dimension( ldh, * ) h, integer ldh, integer iloz, integer ihiz,
    complex, dimension( ldz, * ) z, integer ldz, complex, dimension( ldv, *
    ) v, integer ldv, complex, dimension( ldu, * ) u, integer ldu, integer
    nv, complex, dimension( ldwv, * ) wv, integer ldwv, integer nh, complex,
    dimension( ldwh, * ) wh, integer ldwh)

CLAQR5 performs a single small-bulge multi-shift QR sweep. πŸŒ€

🎯 Purpose

!>
!>    CLAQR5 called by CLAQR0 performs a
!>    single small-bulge multi-shift QR sweep.
!>

so like β€” CLAQR0 calls this one, and this one does one small-bulge multi-shift QR sweep. that's the lore 🫢

πŸ”§ Parameters

  • WANTT β€” a LOGICAL. Set it to .true. if the triangular Schur factor is being computed, and .false. otherwise. πŸŽ€
  • WANTZ β€” a LOGICAL. Set it to .true. if the unitary Schur factor is being computed, and .false. otherwise. πŸ’«
  • KACC22 β€” an INTEGER whose value is 0, 1, or 2. It picks the computation mode for the far-from-diagonal orthogonal updates, iykyk:
    • = 0: CLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
    • = 1: CLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
    • = 2: same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but that is no longer supported β€” legacy feature, we retired her πŸ’€
  • N β€” an INTEGER. It's the order of the Hessenberg matrix H that this subroutine operates on. πŸ“
  • KTOP β€” an INTEGER. (she's got no description of her own, she comes as a package deal with KBOT πŸ‘‡)
  • KBOT β€” an INTEGER. KTOP and KBOT are the first and last rows and columns of an isolated diagonal block, and the QR sweep gets applied to it. It is assumed without a check that either KTOP = 1 or H(KTOP,KTOP-1) = 0, and either KBOT = N or H(KBOT+1,KBOT) = 0. so like… nobody's verifying that for you, bestie, that's on you πŸ™ˆ
  • NSHFTS β€” an INTEGER. It gives the number of simultaneous shifts. NSHFTS must be positive and even β€” that's not a suggestion, that's the rule πŸ”₯
  • S β€” a COMPLEX array, dimension (NSHFTS). It holds the shifts of origin that define the multi-shift QR sweep. On output, S may be reordered. πŸ”€
  • H β€” a COMPLEX array, dimension (LDH,N). On input it contains a Hessenberg matrix. On output, a multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied to the isolated diagonal block in rows and columns KTOP through KBOT. (and yes, it literally says SR(J)+i*SI(J) right there on the complex routine's page β€” we're just the messengers πŸ™ˆ)
  • LDH β€” an INTEGER. It's the leading dimension of H just as declared in the calling procedure. LDH >= MAX(1,N). πŸ“
  • ILOZ β€” an INTEGER. (pairs up with IHIZ, see below πŸ’ž)
  • IHIZ β€” an INTEGER. ILOZ and IHIZ specify the rows of Z that transformations must be applied to if WANTZ is .TRUE.. And the constraint is 1 <= ILOZ <= IHIZ <= N. 🎯
  • Z β€” a COMPLEX array, dimension (LDZ,IHIZ). If WANTZ = .TRUE., then the QR Sweep unitary similarity transformation is accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced β€” she's not even invited to the function πŸ’…
  • LDZ β€” an INTEGER. ok so the page literally says "LDA is the leading dimension of Z" here (yes, LDA, we know, we know 🀑) β€” it means the leading dimension of Z just as declared in the calling procedure, and LDZ >= N. πŸ“
  • V β€” a COMPLEX array, dimension (LDV,NSHFTS/2). πŸ¦‹
  • LDV β€” an INTEGER. It's the leading dimension of V as declared in the calling procedure. LDV >= 3. ✨
  • U β€” a COMPLEX array, dimension (LDU,2*NSHFTS). 🌸
  • LDU β€” an INTEGER. It's the leading dimension of U just as declared in the calling subroutine. LDU >= 2*NSHFTS. πŸ“
  • NV β€” an INTEGER. It's the number of rows in WV available for workspace. NV >= 1. 🧰
  • WV β€” a COMPLEX array, dimension (LDWV,2*NSHFTS). πŸ“
  • LDWV β€” an INTEGER. It's the leading dimension of WV as declared in the calling subroutine. LDWV >= NV. πŸ“
  • NH β€” an INTEGER. It's the number of columns in array WH available for workspace. NH >= 1. 🧰
  • WH β€” a COMPLEX array, dimension (LDWH,NH). 🌟
  • LDWH β€” an INTEGER. Leading dimension of WH just as declared in the calling procedure. LDWH >= 2*NSHFTS. πŸ“

πŸ‘‘ Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

🌟 Contributors:

  • Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA
  • Lars Karlsson, Daniel Kressner, and Bruno Lang
  • Thijs Steel, Department of Computer science, KU Leuven, Belgium

πŸ“š References:

  • K. Braman, R. Byers and R. Mathias, The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 Performance, SIAM Journal of Matrix Analysis, volume 23, pages 929--947, 2002.
  • Lars Karlsson, Daniel Kressner, and Bruno Lang, Optimally packed chains of bulges in multishift QR algorithms. ACM Trans. Math. Softw. 40, 2, Article 12 (February 2014).

Definition at line 254 of file claqr5.f. πŸ“


🌟 subroutine dlaqr5 🌟

subroutine dlaqr5 (logical wantt, logical wantz, integer kacc22, integer n,
    integer ktop, integer kbot, integer nshfts, double precision, dimension(
    * ) sr, double precision, dimension( * ) si, double precision,
    dimension( ldh, * ) h, integer ldh, integer iloz, integer ihiz, double
    precision, dimension( ldz, * ) z, integer ldz, double precision,
    dimension( ldv, * ) v, integer ldv, double precision, dimension( ldu, *
    ) u, integer ldu, integer nv, double precision, dimension( ldwv, * ) wv,
    integer ldwv, integer nh, double precision, dimension( ldwh, * ) wh,
    integer ldwh)

DLAQR5 performs a single small-bulge multi-shift QR sweep. πŸŒ€

🎯 Purpose

!>
!>    DLAQR5, called by DLAQR0, performs a
!>    single small-bulge multi-shift QR sweep.
!>

DLAQR0 calls this one, and she performs one small-bulge multi-shift QR sweep. same storyline, double precision edition πŸ’™

πŸ”§ Parameters

  • WANTT β€” a LOGICAL. Set it to .true. if the quasi-triangular Schur factor is being computed, and .false. otherwise. πŸŽ€
  • WANTZ β€” a LOGICAL. Set it to .true. if the orthogonal Schur factor is being computed, and .false. otherwise. πŸ’«
  • KACC22 β€” an INTEGER whose value is 0, 1, or 2. It picks the computation mode for the far-from-diagonal orthogonal updates:
    • = 0: DLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
    • = 1: DLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
    • = 2: same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but that is no longer supported β€” rip to that era πŸ’€
  • N β€” an INTEGER. It's the order of the Hessenberg matrix H that this subroutine operates on. πŸ“
  • KTOP β€” an INTEGER. (again, she ships together with KBOT πŸ‘‡)
  • KBOT β€” an INTEGER. KTOP and KBOT are the first and last rows and columns of an isolated diagonal block that the QR sweep gets applied to. It is assumed without a check that either KTOP = 1 or H(KTOP,KTOP-1) = 0, and either KBOT = N or H(KBOT+1,KBOT) = 0. no verification, just vibes πŸ™ˆ
  • NSHFTS β€” an INTEGER. It gives the number of simultaneous shifts. NSHFTS must be positive and even. periodt πŸ”₯
  • SR β€” a DOUBLE PRECISION array, dimension (NSHFTS). (she's the real part, SI is the imaginary part β€” see below πŸ‘‡)
  • SI β€” a DOUBLE PRECISION array, dimension (NSHFTS). Here's the tea: SR contains the real parts and SI contains the imaginary parts of the NSHFTS shifts of origin that define the multi-shift QR sweep. On output, SR and SI may be reordered. πŸ”€
  • H β€” bestie we literally got cut off mid-parameter right here 😭 β€” H for dlaqr5 picks up in the next part, hold that thought 🫢
  • H β€” DOUBLE PRECISION</p> array, dimension (LDH,N). On input, H is holding a Hessenberg matrix, and on output there's a multi-shift QR sweep with shifts SR(J)+i*SI(J) applied to the isolated diagonal block in rows and columns KTOP through KBOT. slay, she did the sweep πŸ’…
  • LDH β€” INTEGER</p>. It's the leading dimension of H, exactly as declared in the calling procedure. Constraint era: LDH >= MAX(1,N) ✨
  • ILOZ β€” INTEGER</p>. And that's... literally the whole description bestie 😭 (iykyk β€” she works the row range together with IHIZ right below).
  • IHIZ β€” INTEGER</p>. Together with ILOZ, these specify the rows of Z that transformations must be applied to when WANTZ is .TRUE.. The constraint is 1 <= ILOZ <= IHIZ <= N, no notes πŸŽ€
  • Z β€” DOUBLE PRECISION</p> array, dimension (LDZ,IHIZ). If WANTZ = .TRUE., then the QR Sweep orthogonal similarity transformation gets accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced β€” she's not even invited to the function πŸ’€
  • LDZ β€” INTEGER</p>. Okay so the manpage literally reads "LDA is the leading dimension of Z just as declared in the calling procedure" β€” yes, it says LDA, iconic typo energy 🫠 β€” and the actual constraint is LDZ >= N.
  • V β€” DOUBLE PRECISION</p> array, dimension (LDV,NSHFTS/2). That's the whole note, she's mysterious πŸ¦‹
  • LDV β€” INTEGER</p>. The leading dimension of V as declared in the calling procedure. Constraint: LDV >= 3.
  • U β€” DOUBLE PRECISION</p> array, dimension (LDU,2*NSHFTS). Short and sweet, we respect it πŸ’œ
  • LDU β€” INTEGER</p>. Leading dimension of U just as declared in the in the calling subroutine (yes "in the in the", the source said it twice and we're keeping it 🌸). Constraint: LDU >= 2*NSHFTS.
  • NV β€” INTEGER</p>. The number of rows in WV available for workspace. It's spelled agailable in the original, which is so real of it. Constraint: NV >= 1.
  • WV β€” DOUBLE PRECISION</p> array, dimension (LDWV,2*NSHFTS). Just vibes, no extra notes ✨
  • LDWV β€” INTEGER</p>. The leading dimension of WV as declared in the in the calling subroutine (again with the double "in the" β€” she's committed 😭). Constraint: LDWV >= NV.
  • NH β€” INTEGER</p>. The number of columns in array WH available for workspace. Constraint: NH >= 1.
  • WH β€” DOUBLE PRECISION</p> array, dimension (LDWH,NH). Nothing more to say, moving on πŸŽ€
  • LDWH β€” INTEGER</p>. Leading dimension of WH just as declared in the calling procedure. Constraint: LDWH >= 2*NSHFTS. Last one of this batch, periodt πŸ’…

🌈 Author 🌈

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ’– Contributors πŸ’–

  • Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA
  • Lars Karlsson, Daniel Kressner, and Bruno Lang
  • Thijs Steel, Department of Computer science, KU Leuven, Belgium

πŸ“š References πŸ“š

  • K. Braman, R. Byers and R. Mathias, The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 Performance, SIAM Journal of Matrix Analysis, volume 23, pages 929--947, 2002.
  • Lars Karlsson, Daniel Kressner, and Bruno Lang, Optimally packed chains of bulges in multishift QR algorithms. ACM Trans. Math. Softw. 40, 2, Article 12 (February 2014).

Definition at line 262 of file dlaqr5.f.


🫢 subroutine slaqr5 ( ... )

Okay bestie, deep breath, because now we're doing the REAL version of the exact same situation. Same dance, single precision, still gorgeous πŸ‘‘

subroutine slaqr5 (logical wantt, logical wantz, integer kacc22, integer n,
    integer ktop, integer kbot, integer nshfts, real, dimension( * ) sr,
    real, dimension( * ) si, real, dimension( ldh, * ) h, integer ldh,
    integer iloz, integer ihiz, real, dimension( ldz, * ) z, integer ldz,
    real, dimension( ldv, * ) v, integer ldv, real, dimension( ldu, * ) u,
    integer ldu, integer nv, real, dimension( ldwv, * ) wv, integer ldwv,
    integer nh, real, dimension( ldwh, * ) wh, integer ldwh)

SLAQR5 performs a single small-bulge multi-shift QR sweep. single small-bulge multi-shift QR sweep. Say it five times fast, I dare you 🧚

✨ Purpose ✨

SLAQR5, called by SLAQR0, performs a single small-bulge multi-shift QR sweep.

No cap, that's the whole purpose. She's focused, she's employed, she's main character energy πŸ”₯

🌸 Parameters 🌸

  • WANTT β€” LOGICAL</p>. WANTT = .true. if the quasi-triangular Schur factor is being computed. WANTT is set to .false. otherwise.
  • WANTZ β€” LOGICAL</p>. WANTZ = .true. if the orthogonal Schur factor is being computed. WANTZ is set to .false. otherwise. (Yes, WANTT and WANTZ differ by one letter and both exist. not me mixing them up in a homework assignment πŸ™ˆ)
  • KACC22 β€” INTEGER</p> with value 0, 1, or 2. It specifies the computation mode of far-from-diagonal orthogonal updates:
    • = 0: SLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
    • = 1: SLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
    • = 2: Same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but this is no longer supported. lowkey retired β€” don't rely on that old behaviour fr fr πŸ’€
  • N β€” INTEGER</p>. The order of the Hessenberg matrix H upon which this subroutine operates. She's the queen of the whole operation πŸ‘‘
  • KTOP β€” INTEGER</p>. Holds a spot in the duo below πŸŽ€
  • KBOT β€” INTEGER</p>. Together with KTOP, these are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed β€” without a check ⚠️ β€” that:
either KTOP = 1  or   H(KTOP,KTOP-1) = 0

and

either KBOT = N  or   H(KBOT+1,KBOT) = 0.
Literally "without a check" β€” nobody's verifying that for you, so if you hand her a block that isn't actually isolated, that's on you bestie 😭
  • NSHFTS β€” INTEGER</p>. The number of simultaneous shifts. NSHFTS must be positive and even β€” both, not one or the other 🌸
  • SR β€” REAL</p> array, dimension (NSHFTS). Teams up with SI for the ride πŸ’œ
  • SI β€” REAL</p> array, dimension (NSHFTS). SR contains the real parts and SI contains the imaginary parts of the NSHFTS shifts of origin that define the multi-shift QR sweep. On output SR and SI may be reordered β€” so don't come for them if they show up in a different order than you sent them πŸ™ˆ
  • H β€” REAL</p> array, dimension (LDH,N). On input H contains a Hessenberg matrix. On output a multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied to the isolated diagonal block in rows and columns KTOP through KBOT ✨
  • LDH β€” INTEGER</p>. The leading dimension of H just as declared in the calling procedure. Constraint: LDH >= MAX(1,N).
  • ILOZ β€” INTEGER</p>. Again, one line and gone 😭 (she's half of the ILOZ/IHIZ row-range duo).
  • IHIZ β€” INTEGER</p>. With ILOZ, these specify the rows of Z to which transformations must be applied if WANTZ is .TRUE.. Constraint: 1 <= ILOZ <= IHIZ <= N.
  • Z β€” REAL</p> array, dimension (LDZ,IHIZ). If WANTZ = .TRUE., then the QR Sweep orthogonal similarity transformation is accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced β€” she's chilling, untouched, unbothered πŸ’…
  • LDZ β€” INTEGER</p>. And here we go again: the manpage says "LDA is the leading dimension of Z just as declared in the calling procedure" β€” the LDA typo made it into the single-precision twin too, consistency icon 🫠 β€” and the real constraint is LDZ >= N.
  • V β€” REAL</p> array, dimension (LDV,NSHFTS/2). Bare minimum description, she said no notes πŸ¦‹
  • LDV β€” INTEGER</p>. The leading dimension of V as declared in the calling procedure. Constraint: LDV >= 3.
  • U β€” REAL</p> array, dimension (LDU,2*NSHFTS). Same energy as above ✨
  • LDU β€” INTEGER</p>. The leading dimension of U just as declared in the in the calling subroutine ("in the in the" strikes again 😭). Constraint: LDU >= 2*NSHFTS.
  • NV β€” INTEGER</p>. The number of rows in WV agailable for workspace β€” yes, agailable, she's back and she's iconic. Constraint: NV >= 1.
  • WV β€” REAL</p> array, dimension (LDWV,2*NSHFTS). No further comment, moving on πŸŽ€
  • LDWV β€” INTEGER</p>. The leading dimension of WV as declared in the in the calling subroutine (double "in the", part two 🫠). Constraint: LDWV >= NV.
  • NH β€” INTEGER</p>. The number of columns in array WH available for workspace. Constraint: NH >= 1.
  • WH β€” REAL</p> array, dimension (LDWH,NH). That's it, that's the entry 🌸
  • LDWH β€” INTEGER</p>. Leading dimension of WH just as declared in the calling procedure. Constraint: LDWH >= 2*NSHFTS. And that's the last parameter, we made it πŸŽ‰
   subroutine zlaqr5 (logical wantt, logical wantz, integer kacc22, integer n,
       integer ktop, integer kbot, integer nshfts, complex*16, dimension( * )
       s, complex*16, dimension( ldh, * ) h, integer ldh, integer iloz, integer
       ihiz, complex*16, dimension( ldz, * ) z, integer ldz, complex*16,
       dimension( ldv, * ) v, integer ldv, complex*16, dimension( ldu, * ) u,
       integer ldu, integer nv, complex*16, dimension( ldwv, * ) wv, integer
       ldwv, integer nh, complex*16, dimension( ldwh, * ) wh, integer ldwh)

okay bestie, that’s the whole signature β€” every logical, every integer, every complex*16, and every dimension( * ) exactly where LAPACK put it. The one-liner is literally: ZLAQR5 performs a single small-bulge multi-shift QR sweep. πŸ’…

✨ Purpose ✨

ZLAQR5, called by ZLAQR0, performs a single small-bulge multi-shift QR sweep. That’s the whole purpose, no cap. πŸ¦‹

πŸ“‹ Parameters πŸ“‹

  • WANTT β€” WANTT is LOGICAL. It’s .true. if the triangular Schur factor is being computed. Otherwise it’s set to .false..
  • WANTZ β€” WANTZ is LOGICAL. It’s .true. if the unitary Schur factor is being computed. Otherwise it’s set to .false..
  • KACC22 β€” KACC22 is INTEGER with value 0, 1, or 2. It specifies the computation mode of far-from-diagonal orthogonal updates.
    • = 0: ZLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
    • = 1: ZLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
    • = 2: Same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but this is no longer supported.
  • N β€” N is INTEGER. N is the order of the Hessenberg matrix H upon which this subroutine operates.
  • KTOP β€” KTOP is INTEGER.
  • KBOT β€” KBOT is INTEGER. These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either KTOP = 1 or H(KTOP,KTOP-1) = 0 and either KBOT = N or H(KBOT+1,KBOT) = 0.
  • NSHFTS β€” NSHFTS is INTEGER. NSHFTS gives the number of simultaneous shifts. NSHFTS must be positive and even.
  • S β€” S is COMPLEX*16 array, dimension (NSHFTS). S contains the shifts of origin that define the multi-shift QR sweep. On output S may be reordered.
  • H β€” H is COMPLEX*16 array, dimension (LDH,N). On input H contains a Hessenberg matrix. On output a multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied to the isolated diagonal block in rows and columns KTOP through KBOT.
  • LDH β€” LDH is INTEGER. LDH is the leading dimension of H just as declared in the calling procedure. LDH >= MAX(1,N).
  • ILOZ β€” ILOZ is INTEGER.
  • IHIZ β€” IHIZ is INTEGER. Specify the rows of Z to which transformations must be applied if WANTZ is .TRUE.. 1 <= ILOZ <= IHIZ <= N.
  • Z β€” Z is COMPLEX*16 array, dimension (LDZ,IHIZ). If WANTZ = .TRUE., then the QR Sweep unitary similarity transformation is accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced.
  • LDZ β€” LDZ is INTEGER. The source says LDA is the leading dimension of Z just as declared in the calling procedure. LDZ >= N.
  • V β€” V is COMPLEX*16 array, dimension (LDV,NSHFTS/2).
  • LDV β€” LDV is INTEGER. LDV is the leading dimension of V as declared in the calling procedure. LDV >= 3.
  • U β€” U is COMPLEX*16 array, dimension (LDU,2*NSHFTS).
  • LDU β€” LDU is INTEGER. LDU is the leading dimension of U just as declared in the in the calling subroutine. LDU >= 2*NSHFTS.
  • NV β€” NV is INTEGER. NV is the number of rows in WV agailable for workspace. NV >= 1.
  • WV β€” WV is COMPLEX*16 array, dimension (LDWV,2*NSHFTS).
  • LDWV β€” LDWV is INTEGER. LDWV is the leading dimension of WV as declared in the in the calling subroutine. LDWV >= NV.
  • NH β€” NH is INTEGER. NH is the number of columns in array WH available for workspace. NH >= 1.
  • WH β€” WH is COMPLEX*16 array, dimension (LDWH,NH).
  • LDWH β€” LDWH is INTEGER. Leading dimension of WH just as declared in the calling procedure. LDWH >= 2*NSHFTS.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ’– Contributors πŸ’–

Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA.

Lars Karlsson, Daniel Kressner, and Bruno Lang

Thijs Steel, Department of Computer science, KU Leuven, Belgium

πŸ“š References πŸ“š

K. Braman, R. Byers and R. Mathias, The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 Performance, SIAM Journal of Matrix Analysis, volume 23, pages 929--947, 2002.

Lars Karlsson, Daniel Kressner, and Bruno Lang, Optimally packed chains of bulges in multishift QR algorithms. ACM Trans. Math. Softw. 40, 2, Article 12 (February 2014).

🧾 Definition 🧾

Definition at line 254 of file zlaqr5.f.

πŸ€– Author (Doxygen’s version) πŸ€–

Generated automatically by Doxygen for LAPACK from the source code.


okay that’s the whole page, bestie β€” footer energy is LAPACK Version 3.12.0, laqr5(3), and its date, so this is the cute sign-off instead of the raw footer line. bye and slay πŸ’–βœ¨

πŸ“¦ where this page comes from