SRC/cungtr.f(3)

πŸ’… SRC/cungtr.f(3) β€” Library Functions Manual

okay so bestie, welcome to the cungtr page ✨ this is LAPACK, section 3, and we're literally about to build a whole unitary matrix out of reflectors. no cap.


πŸ¦‹ NAME

SRC/cungtr.f β€” fr fr that's the file, and the star of the show is cungtr πŸŽ€


🌸 SYNOPSIS

Functions/Subroutines

subroutine cungtr (uplo, n, a, lda, tau, work, lwork, info)
CUNGTR πŸ‘‘

πŸ’– Function/Subroutine Documentation

subroutine cungtr (character uplo, integer n, complex, dimension( lda, * )
    a, integer lda, complex, dimension( * ) tau, complex, dimension( * )
    work, integer lwork, integer info)

🧚 CUNGTR

✨ Purpose:

!>
!> CUNGTR generates a complex unitary matrix Q which is defined as the
!> product of n-1 elementary reflectors of order N, as returned by
!> CHETRD:
!>
!> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
!>
!> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
!>

so basically it takes all those cute little elementary reflectors CHETRD handed you and multiplies them together into one full-on unitary matrix Q. main character energy tbh πŸ”₯

πŸŽ€ Parameters

  • UPLO β€” it's a CHARACTER*1, and it's the vibe check for which triangle we're working with:
!>          UPLO is CHARACTER*1
!>          = 'U': Upper triangle of A contains elementary reflectors
!>                 from CHETRD;
!>          = 'L': Lower triangle of A contains elementary reflectors
!>                 from CHETRD.
!>
  • N β€” INTEGER, the order of the matrix Q. and like, N >= 0, okay? don't be weird about it πŸ’€
!>          N is INTEGER
!>          The order of the matrix Q. N >= 0.
!>
  • A β€” COMPLEX array, dimension (LDA,N). on entry it's holding the vectors that define the elementary reflectors, exactly as CHETRD returned them. on exit? boom β€” it's the N-by-N unitary matrix Q. glow-up of the century ngl πŸ¦‹
!>          A is COMPLEX array, dimension (LDA,N)
!>          On entry, the vectors which define the elementary reflectors,
!>          as returned by CHETRD.
!>          On exit, the N-by-N unitary matrix Q.
!>
  • LDA β€” INTEGER, the leading dimension of the array A. requirement: LDA >= N. periodt πŸ’…
!>          LDA is INTEGER
!>          The leading dimension of the array A. LDA >= N.
!>
  • TAU β€” COMPLEX array, dimension (N-1). TAU(i) has got to contain the scalar factor of the elementary reflector H(i), as returned by CHETRD. like it's non-negotiable πŸ™ˆ
!>          TAU is COMPLEX array, dimension (N-1)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by CHETRD.
!>
  • WORK β€” COMPLEX array, dimension (MAX(1,LWORK)). on exit, if INFO = 0, then WORK(1) returns the optimal LWORK. cute lil bonus info ✨
!>          WORK is COMPLEX array, dimension (MAX(1,LWORK))
!>          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
!>
  • LWORK β€” INTEGER, the dimension of the array WORK. it's gotta be LWORK >= N-1. but for optimum performance you want LWORK >= (N-1)*NB, where NB is the optimal blocksize πŸ‘‘
!>          LWORK is INTEGER
!>          The dimension of the array WORK. LWORK >= N-1.
!>          For optimum performance LWORK >= (N-1)*NB, where NB is
!>          the optimal blocksize.
!>

and here's the lil trick bestie: if LWORK = -1, then a workspace query is assumed β€” the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. it's giving "just asking, not committing" 🧚

!>          If LWORK = -1, then a workspace query is assumed; the routine
!>          only calculates the optimal size of the WORK array, returns
!>          this value as the first entry of the WORK array, and no error
!>          message related to LWORK is issued by XERBLA.
!>
  • INFO β€” INTEGER, the receipts:
!>          INFO is INTEGER
!>          = 0:  successful exit
!>          < 0:  if INFO = -i, the i-th argument had an illegal value
!>

so 0 means slay, we're done πŸ’– and < 0 means if INFO = -i, the i-th argument had an illegal value 😭

⭐ Author

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

Definition at line 122 of file cungtr.f. πŸ“


🌈 Author

Generated automatically by Doxygen for LAPACK from the source code. (the robots wrote this part, not me 🫢)


and that's the whole page bestie!! πŸ’œ LAPACK, Version 3.12.0, dated SRC/cungtr.f(3) β€” go forth and build your unitary matrices, you absolute icon πŸŒΈπŸŽ€πŸ¦‹

πŸ“¦ where this page comes from