laqz1(3)
π laqz1 π
okay so bestie, this one is from the Library Functions Manual, and the manual name is literally laqz1 β it's a section 3 kinda situation (that's laqz1(3) if you're keeping score π
). It's giving "step in ggev3, gges3" energy. Let's get into it πΈ
β¨ NAME β¨
laqz1 β no cap, that's the name. And the vibe is: laqz1: step in ggev3, gges3. That's the whole name section, we love a concise icon π
π SYNOPSIS π
π Functions
subroutine claqz1 (ilq, ilz, k, istartm, istopm, ihi, a, lda, b, ldb, nq, qstart, q, ldq, nz, zstart, z, ldz)β this one'sCLAQZ1subroutine dlaqz1 (a, lda, b, ldb, sr1, sr2, si, beta1, beta2, v)β this one'sDLAQZ1subroutine slaqz1 (a, lda, b, ldb, sr1, sr2, si, beta1, beta2, v)β this one'sSLAQZ1subroutine zlaqz1 (ilq, ilz, k, istartm, istopm, ihi, a, lda, b, ldb, nq, qstart, q, ldq, nz, zstart, z, ldz)β and this one'sZLAQZ1
Like yes, there's four of them, one for each flavour of precision, and they all show up in the synopsis first because that's how we do π
π¦ Detailed Description π¦
So the "Detailed Description" section exists, it's in the original, and it is β and I cannot stress this enough β completely empty. Not one word. Just the heading sitting there, main character energy, saying nothing. I respect it tbh πβ¨
π₯ Function Documentation π₯
π subroutine claqz1
subroutine claqz1 (logical, intent(in) ilq, logical, intent(in) ilz,
integer, intent(in) k, integer, intent(in) istartm, integer, intent(in)
istopm, integer, intent(in) ihi, complex, dimension( lda, * ) a,
integer, intent(in) lda, complex, dimension( ldb, * ) b, integer,
intent(in) ldb, integer, intent(in) nq, integer, intent(in) qstart,
complex, dimension( ldq, * ) q, integer, intent(in) ldq, integer,
intent(in) nz, integer, intent(in) zstart, complex, dimension( ldz, * )
z, integer, intent(in) ldz)
π«Ά CLAQZ1
β Purpose
CLAQZ1 chases a 1x1 shift bulge in a matrix pencil down a single position
that's it. that's the purpose. it's chasing a lil 1x1 shift bulge down exactly one position and honestly? go off π¦
π Parameters
ILQβILQisLOGICAL. It decides whether or not we're updating the matrixQ. simple as that, no notes πILZβILZisLOGICAL. Same deal but for the matrixZβ are we updating it or not? you decide, queen πKβKisINTEGER. It's the index telling you where the bulge is hanging out. On entry, the bulge is located in(A(k+1,k),B(k+1,k)). On exit, the bulge is located in(A(k+2,k+1),B(k+2,k+1)). It literally moved one step, that's the whole gig πΆββοΈISTARTMβISTARTMisINTEGER. That's the whole description. iconic minimalism β¨ISTOPMβISTOPMisINTEGER. Updates to(A,B)are restricted to(istartm:k+2,k:istopm). And it's assumed β without checking β thatistartm <= k+1andk+2 <= istopm. so like, it trusts you. don't make it regret that π«ΆIHIβIHIisINTEGER. once again, that's all it says πAβAisCOMPLEXarray, dimension(LDA,N)πLDAβLDAisINTEGER. The leading dimension ofAas declared in the calling procedure.BβBisCOMPLEXarray, dimension(LDB,N)πLDBβLDBisINTEGER. The leading dimension ofBas declared in the calling procedure.NQβNQisINTEGER. The order of the matrixQ. periodt.QSTARTβQSTARTisINTEGER. Start index of the matrixQ. Rotations are applied to columnsk+2-qStart:k+3-qStartofQ. yes, exactly those ones πQβQisCOMPLEXarray, dimension(LDQ,NQ)πLDQβLDQisINTEGER. The leading dimension ofQas declared in the calling procedure.NZβNZisINTEGER. The order of the matrixZ. slay.ZSTARTβZSTARTisINTEGER. Start index of the matrixZ. Rotations are applied to columnsk+1-qStart:k+2-qStartofZ. (and yes, it genuinely saysqStartin there β I'm just telling you what it says, I don't make the rules π)ZβZisCOMPLEXarray, dimension(LDZ,NZ)πLDZβLDZisINTEGER. The leading dimension ofQas declared in the calling procedure. (again β it saysQ. that's the original's whole thing, I'm not touching it π« )
πΈ Author
Thijs Steel, KU Leuven π
π Date
May 2020
π Definition at line 171 of file claqz1.f.
π§ subroutine dlaqz1
subroutine dlaqz1 (double precision, dimension( lda, * ), intent(in) a,
integer, intent(in) lda, double precision, dimension( ldb, * ),
intent(in) b, integer, intent(in) ldb, double precision, intent(in) sr1,
double precision, intent(in) sr2, double precision, intent(in) si,
double precision, intent(in) beta1, double precision, intent(in) beta2,
double precision, dimension( * ), intent(out) v)
π«Ά DLAQZ1
β Purpose
Given a 3-by-3 matrix pencil (A,B), DLAQZ1 sets v to a scalar multiple of the first column of the product:
(*) K = (A - (beta2*sr2 - i*si)*B)*B^(-1)*(beta1*A - (sr2 + i*si2)*B)*B^(-1).
It is assumed that either:
sr1 = sr2si = 0
And why do we care? Because this is useful for starting double implicit shift bulges in the QZ algorithm. that's the tea ββ¨
π Parameters
AβAisDOUBLE PRECISIONarray, dimension(LDA,N). It's the 3-by-3 matrixAin(*).LDAβLDAisINTEGER. The leading dimension ofAas declared in the calling procedure.BβBisDOUBLE PRECISIONarray, dimension(LDB,N). It's the 3-by-3 matrixBin(*).LDBβLDBisINTEGER. The leading dimension ofBas declared in the calling procedure.SR1βSR1isDOUBLE PRECISION. (that's the whole note, bestie π)SR2βSR2isDOUBLE PRECISION.SIβSIisDOUBLE PRECISION.BETA1βBETA1isDOUBLE PRECISION.BETA2βBETA2isDOUBLE PRECISION.VβVisDOUBLE PRECISIONarray, dimension(N). On the way out it's a scalar multiple of the first column of the matrixKin(*). so it's doing the actual delivering π
πΈ Author
Thijs Steel, KU Leuven π
π Date
May 2020
π Definition at line 125 of file dlaqz1.f.
π¦ subroutine slaqz1
subroutine slaqz1 (real, dimension( lda, * ), intent(in) a, integer,
intent(in) lda, real, dimension( ldb, * ), intent(in) b, integer,
intent(in) ldb, real, intent(in) sr1, real, intent(in) sr2, real,
intent(in) si, real, intent(in) beta1, real, intent(in) beta2, real,
dimension( * ), intent(out) v)
π«Ά SLAQZ1
β Purpose
Given a 3-by-3 matrix pencil (A,B), SLAQZ1 sets v to a scalar multiple of the first column of the product:
(*) K = (A - (beta2*sr2 - i*si)*B)*B^(-1)*(beta1*A - (sr2 + i*si2)*B)*B^(-1).
It is assumed that either:
sr1 = sr2si = 0
This is useful for starting double implicit shift bulges in the QZ algorithm. same energy, different precision π
π Parameters
AβAisREALarray, dimension(LDA,N). The 3-by-3 matrixAin(*).LDAβLDAisINTEGER. The leading dimension ofAas declared in the calling procedure.BβBisREALarray, dimension(LDB,N). The 3-by-3 matrixBin(*).LDBβLDBisINTEGER. The leading dimension ofBas declared in the calling procedure.SR1βSR1isREAL. yep πSR2βSR2isREAL.SIβSIisREAL.BETA1βBETA1isREAL.BETA2βBETA2isREAL.VβVisREALarray, dimension(N). A scalar multiple of the first column of the matrixKin(*). π
πΈ Author
Thijs Steel, KU Leuven π
π Date
May 2020
π Definition at line 125 of file slaqz1.f.
π subroutine zlaqz1
subroutine zlaqz1 (logical, intent(in) ilq, logical, intent(in) ilz,
integer, intent(in) k, integer, intent(in) istartm, integer, intent(in)
istopm, integer, intent(in) ihi, complex*16, dimension( lda, * ) a,
integer, intent(in) lda, complex*16, dimension( ldb, * ) b, integer,
intent(in) ldb, integer, intent(in) nq, integer, intent(in) qstart,
complex*16, dimension( ldq, * ) q, integer, intent(in) ldq, integer,
intent(in) nz, integer, intent(in) zstart, complex*16, dimension( ldz, *
) z, integer, intent(in) ldz)
π«Ά ZLAQZ1
β Purpose
ZLAQZ1 chases a 1x1 shift bulge in a matrix pencil down a single position
same little bulge, same single position, but make it COMPLEX*16 π
β¨
π Parameters
ILQβILQisLOGICAL. Determines whether or not to update the matrixQ.ILZβILZisLOGICAL. Determines whether or not to update the matrixZ.KβKisINTEGER. Index indicating the position of the bulge. On entry, the bulge is located in(A(k+1,k),B(k+1,k)). On exit, the bulge is located in(A(k+2,k+1),B(k+2,k+1)). it moved, that's the update πISTARTMβISTARTMisINTEGER.ISTOPMβISTOPMisINTEGER. Updates to(A,B)are restricted to(istartm:k+2,k:istopm). It is assumed without checking thatistartm <= k+1andk+2 <= istopm. again β no checking, so behave π«ΆIHIβIHIisINTEGER.AβAisCOMPLEX*16array, dimension(LDA,N)πLDAβLDAisINTEGER. The leading dimension ofAas declared in the calling procedure.BβBisCOMPLEX*16array, dimension(LDB,N)πLDBβLDBisINTEGER. The leading dimension ofBas declared in the calling procedure.NQβNQisINTEGER. The order of the matrixQ.QSTARTβQSTARTisINTEGER. Start index of the matrixQ. Rotations are applied to columnsk+2-qStart:k+3-qStartofQ.QQβQis aCOMPLEX*16array, dimension(LDQ,NQ). πLDQβLDQisINTEGER; the leading dimension ofQas declared in the calling procedure. β¨NZβNZisINTEGER; the order of the matrixZ. π¦ZSTARTβZSTARTisINTEGER; start index of the matrixZ. Rotations are applied to columnsk+1-qStart:k+2-qStartofZ. πZβZis aCOMPLEX*16array, dimension(LDZ,NZ). πΈLDZβLDZisINTEGER; the leading dimension ofQas declared in the calling procedure. π
π AUTHOR π
Thijs Steel, KU Leuven
π DATE π
May 2020
Definition at line 171 of file zlaqz1.f.
π€ AUTHOR π€
Generated automatically by Doxygen for LAPACK from the source code.
Source/version check, bestie: LAPACK, Version 3.12.0, dated May 2020 β laqz1(3) signing off! ππβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms