unglq(3)

πŸ¦‹ unglq β€” Library Functions Manual (yes, that's unglq(3), bestie) πŸ¦‹

okay so picture this: you're deep in a Fortran/LAPACK situation, you've just run a gelqf, and now you need the actual Q matrix out in the open instead of vibing invisibly inside some reflectors. That's literally this whole page. The NAME says it all:

✨ NAME ✨

unglq β€” the {un,or}glq squad: generate explicit Q from gelqf. πŸ’…


🌸 SYNOPSIS 🌸

Functions πŸŽ€

  • subroutine cunglq (m, n, k, a, lda, tau, work, lwork, info) β€” the complex one, aka CUNGLQ πŸ’œ
  • subroutine dorglq (m, n, k, a, lda, tau, work, lwork, info) β€” the double precision one, aka DORGLQ πŸ¦‹
  • subroutine sorglq (m, n, k, a, lda, tau, work, lwork, info) β€” the single precision real one, aka SORGLQ 🌸
  • subroutine zunglq (m, n, k, a, lda, tau, work, lwork, info) β€” the COMPLEX*16 one, aka ZUNGLQ ⭐

πŸ’– Detailed Description πŸ’–

There's not much up here, bestie β€” the real tea is all down in Function Documentation, where every single routine gets its own full glow-up. Four routines, four icons, one vibe. πŸ‘‘


πŸ‘‘ Function Documentation πŸ‘‘

πŸŽ€ subroutine cunglq (integer m, integer n, integer k, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) tau, complex, dimension( * ) work, integer lwork, integer info)

CUNGLQ πŸ’œ

Purpose:

okay so CUNGLQ generates an M-by-N complex matrix Q with orthonormal rows, and Q is defined as the first M rows of a product of K elementary reflectors of order N, like this:

      Q  =  H(k)**H . . . H(2)**H H(1)**H

which is exactly what CGELQF gives you back. no cap. ✨

Parameters

  • M β€” M is INTEGER. It's the number of rows of the matrix Q, and it has to be M >= 0. 🫢
  • N β€” N is INTEGER. It's the number of columns of the matrix Q, and the rule is N >= M. πŸ’–
  • K β€” K is INTEGER. It's the number of elementary reflectors whose product defines the matrix Q, and the constraint is M >= K >= 0. 🌸
  • A β€” A is COMPLEX array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by CGELQF in the first k rows of its array argument A. On exit, it's the M-by-N matrix Q. glow-up complete. πŸ¦‹
  • LDA β€” LDA is INTEGER. It's the first dimension of the array A, and you need LDA >= max(1,M). ⭐
  • TAU β€” TAU is COMPLEX array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by CGELQF. πŸ™ˆ
  • WORK β€” WORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, then WORK(1) returns the optimal LWORK. πŸ’«
  • LWORK β€” LWORK is INTEGER. It's the dimension of the array WORK, and LWORK >= max(1,M). For optimum performance, LWORK >= M*NB, where NB is the optimal blocksize.

Also very important 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. 🫑

  • INFO β€” INFO is INTEGER. The tea: = 0: successful exit; < 0: if INFO = -i, the i-th argument has an illegal value. πŸ’€

Author

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

Definition at line 126 of file cunglq.f.


πŸ¦‹ subroutine dorglq (integer m, integer n, integer k, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) tau, double precision, dimension( * ) work, integer lwork, integer info)

DORGLQ 🌈

Purpose:

DORGLQ generates an M-by-N real matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:

      Q  =  H(k) . . . H(2) H(1)

as returned by DGELQF. yes, this one's the real deal β€” no conjugate transpose here. πŸ”₯

Parameters

  • M β€” M is INTEGER. Number of rows of the matrix Q, with M >= 0. πŸ’œ
  • N β€” N is INTEGER. Number of columns of the matrix Q, with N >= M. πŸŽ€
  • K β€” K is INTEGER. The number of elementary reflectors whose product defines the matrix Q, with M >= K >= 0. 🌸
  • A β€” A is DOUBLE PRECISION array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by DGELQF in the first k rows of its array argument A. On exit, the M-by-N matrix Q. πŸ’«
  • LDA β€” LDA is INTEGER. The first dimension of the array A, and LDA >= max(1,M). ⭐
  • TAU β€” TAU is DOUBLE PRECISION array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by DGELQF. πŸ™ˆ
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. 🫢
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK, and LWORK >= max(1,M). For optimum performance LWORK >= M*NB, where NB is the optimal blocksize.

And 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 β€” INFO is INTEGER. = 0: successful exit; < 0: if INFO = -i, the i-th argument has an illegal value. 😭

Author

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

Definition at line 126 of file dorglq.f.


🌸 subroutine sorglq (integer m, integer n, integer k, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tau, real, dimension( * ) work, integer lwork, integer info)

SORGLQ πŸŽ€

Purpose:

SORGLQ generates an M-by-N real matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:

      Q  =  H(k) . . . H(2) H(1)

as returned by SGELQF. single precision edition, same energy. ✨

Parameters

  • M β€” M is INTEGER. The number of rows of the matrix Q, M >= 0. πŸ’–
  • N β€” N is INTEGER. The number of columns of the matrix Q, N >= M. πŸ¦‹
  • K β€” K is INTEGER. The number of elementary reflectors whose product defines the matrix Q, and M >= K >= 0. 🫢
  • A β€” A is REAL array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by SGELQF in the first k rows of its array argument A. On exit, the M-by-N matrix Q. periodt. πŸ’œ
  • LDA β€” LDA is INTEGER. The first dimension of the array A, LDA >= max(1,M). 🌈
  • TAU β€” TAU is REAL array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by SGELQF. πŸ™ˆ
  • WORK β€” WORK is REAL array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. ⭐
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK, LWORK >= max(1,M). For optimum performance LWORK >= M*NB, where NB is the optimal blocksize.

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 β€” INFO is INTEGER. = 0: successful exit; < 0: if INFO = -i, the i-th argument has an illegal value. πŸ’€

Author

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

Definition at line 126 of file sorglq.f.


⭐ subroutine zunglq (integer m, integer n, integer k, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * ) work, integer lwork, integer info)

ZUNGLQ 🧚

Purpose:

ZUNGLQ generates an M-by-N complex matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:

      Q  =  H(k)**H . . . H(2)**H H(1)**H

as returned by ZGELQF. and yes the **H is everywhere, it's giving conjugate transpose realness. πŸ”₯

Parameters

  • M β€” M is INTEGER. The number of rows of the matrix Q, M >= 0. 🌸
  • N β€” N is INTEGER. The number of columns of the matrix Q, N >= M. πŸŽ€
  • K β€” K is INTEGER. The number of elementary reflectors whose product defines the matrix Q, M >= K >= 0. πŸ’œ
  • A β€” A is COMPLEX*16 array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by ZGELQF in the first k rows of its array argument A. On exit, the M-by-N matrix Q. main character energy. πŸ‘‘
  • LDA β€” LDA is INTEGER. The first dimension of the array A, LDA >= max(1,M). 🌈
  • TAU β€” TAU is COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZGELQF. πŸ™ˆ
  • WORK β€” WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. πŸ’«

and bestie, LWORK for ZUNGLQ is literally right there waiting β€” part 2 has the rest, hold on πŸ«ΆπŸ’…

  • LWORK β€” okay so this one is an INTEGER, and it's literally the dimension of the WORK array. The rule is LWORK >= max(1,M). For optimum performance, go bigger: LWORK >= M*NB, where NB is the optimal blocksize. Slay, but respect the math.
🚨 Workspace-query moment, 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. That's the whole vibe.
  • INFO β€” also an INTEGER, and it's giving status-report main character energy:
    • = 0: successful exit;
    • < 0: if INFO = -i, the i-th argument has an illegal value.

✨ Author ✨

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

Definition at line 126 of file zunglq.f.

πŸ€– Author (the generated one) πŸ€–

Generated automatically by Doxygen for LAPACK from the source code.


That's the unglq(3) saga wrapped, bestie. Source/version tea: LAPACK, version 3.12.0 β€” and the footer's date/page slot is literally unglq(3), so I'm not inventing extra date energy. πŸ’…βœ¨

πŸ“¦ where this page comes from