lags2(3)

πŸ’… lags2(3) β€” lags2: 2x2 orthogonal factor, step in tgsja πŸ’…

okay so first things first, bestie: this is lags2(3) out of the Library Functions Manual, and it's a whole little family of routines β€” clags2, dlags2, slags2, zlags2 β€” all doing the same 2-by-2 orthogonal/unitary dance in different precisions and flavours. πŸ¦‹


🌸 NAME 🌸

lags2 β€” lags2: 2x2 orthogonal factor, step in tgsja


✨ SYNOPSIS ✨

🫢 Functions

  • clags2 β€” CLAGS2
subroutine clags2 (upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv,
    csq, snq)
  • dlags2 β€” 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.
subroutine dlags2 (upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv,
    csq, snq)
  • slags2 β€” SLAGS2 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.
subroutine slags2 (upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv,
    csq, snq)
  • zlags2 β€” ZLAGS2
subroutine zlags2 (upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv,
    csq, snq)

πŸ“š Detailed Description πŸ“š

Not gonna lie, the "detailed description" is just vibes and a heading β€” the real content lives under Function Documentation below. Each routine gets its own lil shrine: purpose, parameters, author credits, and the exact file/line where it lives. πŸŽ€


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’– subroutine clags2 πŸ’–

subroutine clags2 (logical upper, real a1, complex a2, real a3, real b1,
    complex b2, real b3, real csu, complex snu, real csv, complex snv, real
    csq, complex snq)

CLAGS2 β€” say hi πŸ‘‹

🌟 Purpose

!>
!> CLAGS2 computes 2-by-2 unitary matrices U, V and Q, such
!> that if ( UPPER ) then
!>
!>           U**H *A*Q = U**H *( A1 A2 )*Q = ( x  0  )
!>                             ( 0  A3 )     ( x  x  )
!> and
!>           V**H*B*Q = V**H *( B1 B2 )*Q = ( x  0  )
!>                            ( 0  B3 )     ( x  x  )
!>
!> or if ( .NOT.UPPER ) then
!>
!>           U**H *A*Q = U**H *( A1 0  )*Q = ( x  x  )
!>                             ( A2 A3 )     ( 0  x  )
!> and
!>           V**H *B*Q = V**H *( B1 0  )*Q = ( x  x  )
!>                             ( B2 B3 )     ( 0  x  )
!> where
!>
!>   U = (   CSU    SNU ), V = (  CSV    SNV ),
!>       ( -SNU**H  CSU )      ( -SNV**H CSV )
!>
!>   Q = (   CSQ    SNQ )
!>       ( -SNQ**H  CSQ )
!>
!> The rows of the transformed A and B are parallel. Moreover, if the
!> input 2-by-2 matrix A is not zero, then the transformed (1,1) entry
!> of A is not zero. If the input matrices A and B are both not zero,
!> then the transformed (2,2) element of B is not zero, except when the
!> first rows of input A and B are parallel and the second rows are
!> zero.
!>

so the whole point is that after U**H, V**H and Q do their thing, the rows of the transformed A and B are parallel β€” like, matching outfits parallel ✨ β€” and there's that whole caveat list about which entries can't be zero. read it carefully, it's the whole personality of the routine πŸ’…

πŸŽ€ Parameters

  • UPPER β€” UPPER is LOGICAL. = .TRUE.: the input matrices A and B are upper triangular. = .FALSE.: the input matrices A and B are lower triangular.
  • A1 β€” A1 is REAL.
  • A2 β€” A2 is COMPLEX.
  • A3 β€” A3 is REAL. On entry, A1, A2 and A3 are elements of the input 2-by-2 upper (lower) triangular matrix A.
  • B1 β€” B1 is REAL.
  • B2 β€” B2 is COMPLEX.
  • B3 β€” B3 is REAL. On entry, B1, B2 and B3 are elements of the input 2-by-2 upper (lower) triangular matrix B.
  • CSU β€” CSU is REAL.
  • SNU β€” SNU is COMPLEX. The desired unitary matrix U.
  • CSV β€” CSV is REAL.
  • SNV β€” SNV is COMPLEX. The desired unitary matrix V.
  • CSQ β€” CSQ is REAL.
  • SNQ β€” SNQ is COMPLEX. The desired unitary matrix Q.

🫢 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

Definition at line 156 of file clags2.f.


🌈 subroutine dlags2 🌈

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.

⭐ 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.
!>
!>

real-valued bestie edition β€” everything's DOUBLE PRECISION, the transpose is **T, and Z**T denotes the transpose of Z. iconic, no notes πŸ’œ

πŸŽ€ Parameters

  • UPPER β€” UPPER is LOGICAL. = .TRUE.: the input matrices A and B are upper triangular. = .FALSE.: the input matrices A and B are lower triangular.
  • A1 β€” A1 is DOUBLE PRECISION.
  • A2 β€” A2 is DOUBLE PRECISION.
  • A3 β€” A3 is DOUBLE PRECISION. On entry, A1, A2 and A3 are elements of the input 2-by-2 upper (lower) triangular matrix A.
  • B1 β€” B1 is DOUBLE PRECISION.
  • B2 β€” B2 is DOUBLE PRECISION.
  • B3 β€” B3 is DOUBLE PRECISION. On entry, B1, B2 and B3 are elements of the input 2-by-2 upper (lower) triangular matrix B.
  • CSU β€” CSU is DOUBLE PRECISION.
  • SNU β€” SNU is DOUBLE PRECISION. The desired orthogonal matrix U.
  • CSV β€” CSV is DOUBLE PRECISION.
  • SNV β€” SNV is DOUBLE PRECISION. The desired orthogonal matrix V.
  • CSQ β€” CSQ is DOUBLE PRECISION.
  • SNQ β€” SNQ is DOUBLE PRECISION. The desired orthogonal matrix Q.

🫢 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

Definition at line 150 of file dlags2.f.


🌸 subroutine slags2 🌸

subroutine slags2 (logical upper, real a1, real a2, real a3, real b1, real
    b2, real b3, real csu, real snu, real csv, real snv, real csq, real snq)

SLAGS2 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.

🌟 Purpose

!>
!> SLAGS2 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.
!>
!>

single-precision real queen πŸ“ β€” same story as dlags2, just REAL everything.

πŸŽ€ Parameters

  • UPPER β€” UPPER is LOGICAL. = .TRUE.: the input matrices A and B are upper triangular. = .FALSE.: the input matrices A and B are lower triangular.
  • A1 β€” A1 is REAL.
  • A2 β€” A2 is REAL.
  • A3 β€” A3 is REAL. On entry, A1, A2 and A3 are elements of the input 2-by-2 upper (lower) triangular matrix A.
  • B1 β€” B1 is REAL.
  • B2 β€” B2 is REAL.
  • B3 β€” B3 is REAL. On entry, B1, B2 and B3 are elements of the input 2-by-2 upper (lower) triangular matrix B.
  • CSU β€” CSU is REAL.
  • SNU β€” SNU is REAL. The desired orthogonal matrix U.
  • CSV β€” CSV is REAL.
  • SNV β€” SNV is REAL. The desired orthogonal matrix V.
  • CSQ β€” CSQ is REAL.
  • SNQ β€” SNQ is REAL. The desired orthogonal matrix Q.

🫢 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

Definition at line 150 of file slags2.f.


πŸ¦‹ subroutine zlags2 πŸ¦‹

subroutine zlags2 (logical upper, double precision a1, complex*16 a2, double
    precision a3, double precision b1, complex*16 b2, double precision b3,
    double precision csu, complex*16 snu, double precision csv, complex*16
    snv, double precision csq, complex*16 snq)

ZLAGS2

✨ Purpose

...and that's exactly where this half of the page cuts off, bestie β€” the Purpose: block for ZLAGS2 picks up in part 2, and it is not to be missed πŸ”₯

so the whole ZLAGS2 glow-up is this: it computes 2-by-2 unitary matrices U, V and Q, such that if ( UPPER ) then

U**H *A*Q = U**H *( A1 A2 )*Q = ( x  0  )
                              ( 0  A3 )     ( x  x  )
and
V**H*B*Q = V**H *( B1 B2 )*Q = ( x  0  )
                             ( 0  B3 )     ( x  x  )

or if ( .NOT.UPPER ) then

U**H *A*Q = U**H *( A1 0  )*Q = ( x  x  )
                              ( A2 A3 )     ( 0  x  )
and
V**H *B*Q = V**H *( B1 0  )*Q = ( x  x  )
                              ( B2 B3 )     ( 0  x  )

where

U = (   CSU    SNU ), V = (  CSV    SNV ),
    ( -SNU**H  CSU )      ( -SNV**H CSV )

Q = (   CSQ    SNQ )
    ( -SNQ**H  CSQ )

the matrix entries start with literally -SNU, -SNV, and -SNQ β€” with the **H bits exactly like the matrix block shows, bestie πŸ’…

The rows of the transformed A and B are parallel. Moreover, if the input 2-by-2 matrix A is not zero, then the transformed (1,1) entry of A is not zero. If the input matrices A and B are both not zero, then the transformed (2,2) element of B is not zero, except when the first rows of input A and B are parallel and the second rows are zero. periodt ✨


✨ Parameters ✨

  • UPPER β€” UPPER is LOGICAL. = .TRUE.: the input matrices A and B are upper triangular. = .FALSE.: the input matrices A and B are lower triangular. 🫢
  • A1 β€” A1 is DOUBLE PRECISION.
  • A2 β€” A2 is COMPLEX*16.
  • A3 β€” A3 is DOUBLE PRECISION. On entry, A1, A2 and A3 are elements of the input 2-by-2 upper (lower) triangular matrix A. 🌸
  • B1 β€” B1 is DOUBLE PRECISION.
  • B2 β€” B2 is COMPLEX*16.
  • B3 β€” B3 is DOUBLE PRECISION. On entry, B1, B2 and B3 are elements of the input 2-by-2 upper (lower) triangular matrix B. πŸ’–
  • CSU β€” CSU is DOUBLE PRECISION.
  • SNU β€” SNU is COMPLEX*16. The desired unitary matrix U. πŸ‘‘
  • CSV β€” CSV is DOUBLE PRECISION.
  • SNV β€” SNV is COMPLEX*16. The desired unitary matrix V. πŸ¦‹
  • CSQ β€” CSQ is DOUBLE PRECISION.
  • SNQ β€” SNQ is COMPLEX*16. The desired unitary matrix Q. 🌈

πŸ‘‘ Author πŸ‘‘

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

Definition at line 156 of file zlags2.f. πŸ“œ

✨ Author ✨

Generated automatically by Doxygen for LAPACK from the source code. πŸŽ€


and that’s the whole tea from LAPACK Version 3.12.0, page lags2(3) β€” source/version and page-name realness included, mwah! πŸ’–βœ¨

πŸ“¦ where this page comes from