SLAGV2(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… SLAGV2(3) β€” bestie, she does 2-by-2 generalized Schur factorization πŸ’…

okay so first things first: this page lives in the Library Functions Manual, and the file it's documenting is literally right here in all its glory:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/slagv2.f

that's the whole vibe. LAPACK source, no cap. πŸŽ€


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/slagv2.f

(yeah bestie the NAME section is just... the path. it's giving "I don't need a nickname, my full legal name is my brand." πŸ’€)


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine SLAGV2 (a, lda, b, ldb, alphar, alphai, beta, csl, snl, csr,
    snr)

and what does she do? she computes the Generalized Schur factorization of a real 2-by-2 matrix pencil (A,B) where B is upper triangular. iconic behaviour, honestly. πŸ‘‘


🌸 Function/Subroutine Documentation 🌸

⭐ subroutine SLAGV2 ⭐

the full signature, and yes you're reading it right, there's a lot of arguments:

subroutine SLAGV2 (real, dimension( lda, * ) a, integer lda, real,
    dimension( ldb, * ) b, integer ldb, real, dimension( 2 ) alphar, real,
    dimension( 2 ) alphai, real, dimension( 2 ) beta, real csl, real snl,
    real csr, real snr)

SLAGV2 computes the Generalized Schur factorization of a real 2-by-2 matrix pencil (A,B) where B is upper triangular. (yes, we're saying it again, because that's what the page says and she's consistent πŸ’–)


🎯 Purpose

literally the whole point of her existence:

!>
!> SLAGV2 computes the Generalized Schur factorization of a real 2-by-2
!> matrix pencil (A,B) where B is upper triangular. This routine
!> computes orthogonal (rotation) matrices given by CSL, SNL and CSR,
!> SNR such that
!>
!> 1) if the pencil (A,B) has two real eigenvalues (include 0/0 or 1/0
!>    types), then
!>
!>    [ a11 a12 ] := [  CSL  SNL ] [ a11 a12 ] [  CSR -SNR ]
!>    [  0  a22 ]    [ -SNL  CSL ] [ a21 a22 ] [  SNR  CSR ]
!>
!>    [ b11 b12 ] := [  CSL  SNL ] [ b11 b12 ] [  CSR -SNR ]
!>    [  0  b22 ]    [ -SNL  CSL ] [  0  b22 ] [  SNR  CSR ],
!>
!> 2) if the pencil (A,B) has a pair of complex conjugate eigenvalues,
!>    then
!>
!>    [ a11 a12 ] := [  CSL  SNL ] [ a11 a12 ] [  CSR -SNR ]
!>    [ a21 a22 ]    [ -SNL  CSL ] [ a21 a22 ] [  SNR  CSR ]
!>
!>    [ b11  0  ] := [  CSL  SNL ] [ b11 b12 ] [  CSR -SNR ]
!>    [  0  b22 ]    [ -SNL  CSL ] [  0  b22 ] [  SNR  CSR ]
!>
!>    where b11 >= b22 > 0.
!>
!>

two real eigenvalues? πŸ’… complex conjugate pair? πŸ’… either way, rotations get applied and everything gets re-triangularized. where b11 >= b22 > 0 β€” she has order, she has standards.


🌈 Parameters

πŸ“ A

!>          A is REAL array, dimension (LDA, 2)
!>          On entry, the 2 x 2 matrix A.
!>          On exit, A is overwritten by the ``A-part'' of the
!>          generalized Schur form.
!>

so: A comes in as your cute little 2 x 2 matrix, and leaves as the "A-part" of the generalized Schur form. she's a makeover artist, basically. ✨

πŸ“ LDA

!>          LDA is INTEGER
!>          THe leading dimension of the array A.  LDA >= 2.
!>

(and yes, the original really does capitalize it as THe, we're not fixing her typos, we love her as she is 😭) β€” leading dimension of A, and it has to be LDA >= 2.

πŸ“ B

!>          B is REAL array, dimension (LDB, 2)
!>          On entry, the upper triangular 2 x 2 matrix B.
!>          On exit, B is overwritten by the ``B-part'' of the
!>          generalized Schur form.
!>

B arrives upper triangular, 2 x 2, and gets overwritten with the "B-part" of the generalized Schur form. same deal as her sister A. 🫢

πŸ“ LDB

!>          LDB is INTEGER
!>          THe leading dimension of the array B.  LDB >= 2.
!>

leading dimension of B, and it needs LDB >= 2. (again with the THe, obsessed with the lowercase energy πŸ’€)

πŸ“ ALPHAR

!>          ALPHAR is REAL array, dimension (2)
!>

just a real array of dimension (2). no notes. πŸ‘‘

πŸ“ ALPHAI

!>          ALPHAI is REAL array, dimension (2)
!>

also a real array of dimension (2). the imaginary half of the eigenvalue story.

πŸ“ BETA

!>          BETA is REAL array, dimension (2)
!>          (ALPHAR(k)+i*ALPHAI(k))/BETA(k) are the eigenvalues of the
!>          pencil (A,B), k=1,2, i = sqrt(-1).  Note that BETA(k) may
!>          be zero.
!>

here's the tea β˜•: (ALPHAR(k)+i*ALPHAI(k))/BETA(k) are the eigenvalues of the pencil (A,B), for k=1,2, with i = sqrt(-1). and BETA(k) may be zero β€” so like, watch out, no dividing blindly. πŸ™ˆ

πŸ“ CSL

!>          CSL is REAL
!>          The cosine of the left rotation matrix.
!>

the cosine of the left rotation matrix. πŸ’–

πŸ“ SNL

!>          SNL is REAL
!>          The sine of the left rotation matrix.
!>

the sine of the left rotation matrix. πŸ¦‹

πŸ“ CSR

!>          CSR is REAL
!>          The cosine of the right rotation matrix.
!>

the cosine of the right rotation matrix. 🌸

πŸ“ SNR

!>          SNR is REAL
!>          The sine of the right rotation matrix.
!>

the sine of the right rotation matrix. and that's the full rotation squad: CSL, SNL, CSR, SNR. iykyk. ✨


πŸ‘‘ Author

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

the whole academic + lab powerhouse lineup, honestly. main character institutions. πŸ›οΈ


🫢 Contributors:

  • Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA

shoutout Mark, fr fr. 🌟


⭐ Definition at line 155 of file slagv2.f.

(line 155 specifically, write that down bestie ✍️)


πŸ’œ Author (the meta one)

Generated automatically by Doxygen for LAPACK from the source code.

like, she wrote her own biography. queen behaviour. πŸ€–πŸ‘‘


and that's the page, bestie! πŸŽ€ the footer on this one is LAPACK β€” Version 3.12.0 with the file path /home/abui...RC/slagv2.f(3) at the bottom, so now you know exactly which build you're dealing with. slay, go factor something. πŸ’…βœ¨

πŸ“¦ where this page comes from