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's CLAQZ1
  • subroutine dlaqz1 (a, lda, b, ldb, sr1, sr2, si, beta1, beta2, v) β€” this one's DLAQZ1
  • subroutine slaqz1 (a, lda, b, ldb, sr1, sr2, si, beta1, beta2, v) β€” this one's SLAQZ1
  • subroutine zlaqz1 (ilq, ilz, k, istartm, istopm, ihi, a, lda, b, ldb, nq, qstart, q, ldq, nz, zstart, z, ldz) β€” and this one's ZLAQZ1

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 β€” ILQ is LOGICAL. It decides whether or not we're updating the matrix Q. simple as that, no notes πŸ’…
  • ILZ β€” ILZ is LOGICAL. Same deal but for the matrix Z β€” are we updating it or not? you decide, queen πŸ‘‘
  • K β€” K is INTEGER. 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 β€” ISTARTM is INTEGER. That's the whole description. iconic minimalism ✨
  • ISTOPM β€” ISTOPM is INTEGER. Updates to (A,B) are restricted to (istartm:k+2,k:istopm). And it's assumed β€” without checking β€” that istartm <= k+1 and k+2 <= istopm. so like, it trusts you. don't make it regret that 🫢
  • IHI β€” IHI is INTEGER. once again, that's all it says πŸ’€
  • A β€” A is COMPLEX array, dimension (LDA,N) πŸŽ€
  • LDA β€” LDA is INTEGER. The leading dimension of A as declared in the calling procedure.
  • B β€” B is COMPLEX array, dimension (LDB,N) πŸŽ€
  • LDB β€” LDB is INTEGER. The leading dimension of B as declared in the calling procedure.
  • NQ β€” NQ is INTEGER. The order of the matrix Q. periodt.
  • QSTART β€” QSTART is INTEGER. Start index of the matrix Q. Rotations are applied to columns k+2-qStart:k+3-qStart of Q. yes, exactly those ones πŸŒ€
  • Q β€” Q is COMPLEX array, dimension (LDQ,NQ) πŸŽ€
  • LDQ β€” LDQ is INTEGER. The leading dimension of Q as declared in the calling procedure.
  • NZ β€” NZ is INTEGER. The order of the matrix Z. slay.
  • ZSTART β€” ZSTART is INTEGER. Start index of the matrix Z. Rotations are applied to columns k+1-qStart:k+2-qStart of Z. (and yes, it genuinely says qStart in there β€” I'm just telling you what it says, I don't make the rules πŸ™ˆ)
  • Z β€” Z is COMPLEX array, dimension (LDZ,NZ) πŸŽ€
  • LDZ β€” LDZ is INTEGER. The leading dimension of Q as declared in the calling procedure. (again β€” it says Q. 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:

  1. sr1 = sr2
  2. si = 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 β€” A is DOUBLE PRECISION array, dimension (LDA,N). It's the 3-by-3 matrix A in (*).
  • LDA β€” LDA is INTEGER. The leading dimension of A as declared in the calling procedure.
  • B β€” B is DOUBLE PRECISION array, dimension (LDB,N). It's the 3-by-3 matrix B in (*).
  • LDB β€” LDB is INTEGER. The leading dimension of B as declared in the calling procedure.
  • SR1 β€” SR1 is DOUBLE PRECISION. (that's the whole note, bestie πŸŽ€)
  • SR2 β€” SR2 is DOUBLE PRECISION.
  • SI β€” SI is DOUBLE PRECISION.
  • BETA1 β€” BETA1 is DOUBLE PRECISION.
  • BETA2 β€” BETA2 is DOUBLE PRECISION.
  • V β€” V is DOUBLE PRECISION array, dimension (N). On the way out it's a scalar multiple of the first column of the matrix K in (*). 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:

  1. sr1 = sr2
  2. si = 0

This is useful for starting double implicit shift bulges in the QZ algorithm. same energy, different precision πŸ’…

πŸ“ Parameters

  • A β€” A is REAL array, dimension (LDA,N). The 3-by-3 matrix A in (*).
  • LDA β€” LDA is INTEGER. The leading dimension of A as declared in the calling procedure.
  • B β€” B is REAL array, dimension (LDB,N). The 3-by-3 matrix B in (*).
  • LDB β€” LDB is INTEGER. The leading dimension of B as declared in the calling procedure.
  • SR1 β€” SR1 is REAL. yep πŸŽ€
  • SR2 β€” SR2 is REAL.
  • SI β€” SI is REAL.
  • BETA1 β€” BETA1 is REAL.
  • BETA2 β€” BETA2 is REAL.
  • V β€” V is REAL array, dimension (N). A scalar multiple of the first column of the matrix K in (*). πŸ’

🌸 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 β€” ILQ is LOGICAL. Determines whether or not to update the matrix Q.
  • ILZ β€” ILZ is LOGICAL. Determines whether or not to update the matrix Z.
  • K β€” K is INTEGER. 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 β€” ISTARTM is INTEGER.
  • ISTOPM β€” ISTOPM is INTEGER. Updates to (A,B) are restricted to (istartm:k+2,k:istopm). It is assumed without checking that istartm <= k+1 and k+2 <= istopm. again β€” no checking, so behave 🫢
  • IHI β€” IHI is INTEGER.
  • A β€” A is COMPLEX*16 array, dimension (LDA,N) πŸŽ€
  • LDA β€” LDA is INTEGER. The leading dimension of A as declared in the calling procedure.
  • B β€” B is COMPLEX*16 array, dimension (LDB,N) πŸŽ€
  • LDB β€” LDB is INTEGER. The leading dimension of B as declared in the calling procedure.
  • NQ β€” NQ is INTEGER. The order of the matrix Q.
  • QSTART β€” QSTART is INTEGER. Start index of the matrix Q. Rotations are applied to columns k+2-qStart:k+3-qStart of Q.
  • Q
  • Q β€” Q is a COMPLEX*16 array, dimension (LDQ,NQ). πŸ’…
  • LDQ β€” LDQ is INTEGER; the leading dimension of Q as declared in the calling procedure. ✨
  • NZ β€” NZ is INTEGER; the order of the matrix Z. πŸ¦‹
  • ZSTART β€” ZSTART is INTEGER; start index of the matrix Z. Rotations are applied to columns k+1-qStart:k+2-qStart of Z. πŸŽ€
  • Z β€” Z is a COMPLEX*16 array, dimension (LDZ,NZ). 🌸
  • LDZ β€” LDZ is INTEGER; the leading dimension of Q as 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