SRC/dlags2.f(3)

πŸ’– SRC/dlags2.f β€” the dlags2 era πŸ’–

okay so bestie, this is a page from the LAPACK library manual (the SRC/dlags2.f corner of it), and it's literally all about one little subroutine that does big main-character math. no cap, let's get into it πŸŽ€


✨ NAME ✨

SRC/dlags2.f β€” the source file itself, bestie. that's the name. it's giving "file name energy" πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine dlags2 (upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv, csq, snq) β€” DLAGS2 computes 2-by-2 orthogonal matrices U, V, and Q, and applies them to matrices A and B such that the rows of the transformed A and B are parallel. that's the whole vibe πŸ”₯

πŸ’œ Function/Subroutine Documentation πŸ’œ

🫢 subroutine dlags2 (logical upper, double precision a1, double precision a2, double precision a3, double precision b1, double precision b2, double precision b3, double precision csu, double precision snu, double precision csv, double precision snv, double precision csq, double precision snq)

DLAGS2 computes 2-by-2 orthogonal matrices U, V, and Q, and applies them to matrices A and B such that the rows of the transformed A and B are parallel. yes queen, parallel rows, that's the goal ✨

πŸŽ€ Purpose:

!>
!> DLAGS2 computes 2-by-2 orthogonal matrices U, V and Q, such
!> that if ( UPPER ) then
!>
!>           U**T *A*Q = U**T *( A1 A2 )*Q = ( x  0  )
!>                             ( 0  A3 )     ( x  x  )
!> and
!>           V**T*B*Q = V**T *( B1 B2 )*Q = ( x  0  )
!>                            ( 0  B3 )     ( x  x  )
!>
!> or if ( .NOT.UPPER ) then
!>
!>           U**T *A*Q = U**T *( A1 0  )*Q = ( x  x  )
!>                             ( A2 A3 )     ( 0  x  )
!> and
!>           V**T*B*Q = V**T*( B1 0  )*Q = ( x  x  )
!>                           ( B2 B3 )     ( 0  x  )
!>
!> The rows of the transformed A and B are parallel, where
!>
!>   U = (  CSU  SNU ), V = (  CSV SNV ), Q = (  CSQ   SNQ )
!>       ( -SNU  CSU )      ( -SNV CSV )      ( -SNQ   CSQ )
!>
!> Z**T denotes the transpose of Z.
!>
!>

the way those matrices line up 😭 it's honestly so satisfying. and yes, Z**T denotes the transpose of Z β€” keep that in your notes, bestie πŸ¦‹

🌈 Parameters

  • UPPER β€” UPPER is LOGICAL. it tells you which triangle situation you're in: = .TRUE. means the input matrices A and B are upper triangular, and = .FALSE. means the input matrices A and B are lower triangular. pick your fighter πŸ’…
  • A1 β€” A1 is DOUBLE PRECISION. that's it, that's the whole description πŸŽ€
  • A2 β€” A2 is DOUBLE PRECISION. same energy ✨
  • A3 β€” A3 is DOUBLE PRECISION. and the tea is: on entry, A1, A2 and A3 are elements of the input 2-by-2 upper (lower) triangular matrix A. so these three are a package deal πŸ’–
  • B1 β€” B1 is DOUBLE PRECISION. iconic, brief, to the point 🌸
  • B2 β€” B2 is DOUBLE PRECISION. yep 🫢
  • B3 β€” B3 is DOUBLE PRECISION. and: on entry, B1, B2 and B3 are elements of the input 2-by-2 upper (lower) triangular matrix B. matching set with A, lowkey cute πŸ”₯
  • CSU β€” CSU is DOUBLE PRECISION. short and sweet πŸ’…
  • SNU β€” SNU is DOUBLE PRECISION. the desired orthogonal matrix U. she's the moment πŸ‘‘
  • CSV β€” CSV is DOUBLE PRECISION. (not a spreadsheet, bestie, do not try to open it) ⭐
  • SNV β€” SNV is DOUBLE PRECISION. the desired orthogonal matrix V. serving looks 🌈
  • CSQ β€” CSQ is DOUBLE PRECISION. tiny but mighty πŸ“
  • SNQ β€” SNQ is DOUBLE PRECISION. the desired orthogonal matrix Q. the final boss of the trio 🧚

πŸ‘‘ Author

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

shoutout to the whole squad, fr fr 🫢

Definition at line 150 of file dlags2.f. ← yes, exact line, we don't round in this house πŸ’€

⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. so it wasn't even hand-written, the robots did it for us πŸ™ˆ


and that's the whole page, bestie!! πŸ’– this was LAPACK, Version 3.12.0, dated SRC/dlags2.f(3) β€” mwah, slay, periodt πŸŽ€βœ¨πŸ’…

πŸ“¦ where this page comes from