/home/abui...RC/zgelq.f(3)

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

πŸ’… NAME

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

okay so bestie, that's the whole name, it's a Fortran file, that's just how these manpages are, we don't question it ✨ (this page is from the Library Functions Manual, just so u know 🫢)


🌸 SYNOPSIS

Functions/Subroutines

subroutine ZGELQ (m, n, a, lda, t, tsize, work, lwork, info)

ZGELQ β€” that's her, that's the girl πŸ’…


πŸ¦‹ Function/Subroutine Documentation

subroutine ZGELQ (integer m, integer n, complex*16, dimension( lda, * ) a,
    integer lda, complex*16, dimension( * ) t, integer tsize, complex*16,
    dimension( * ) work, integer lwork, integer info)

ZGELQ (yes queen, say it back) πŸ‘‘

⭐ Purpose:

!>
!> ZGELQ computes an LQ factorization of a complex M-by-N matrix A:
!>
!>    A = ( L 0 ) *  Q
!>
!> where:
!>
!>    Q is a N-by-N orthogonal matrix;
!>    L is a lower-triangular M-by-M matrix;
!>    0 is a M-by-(N-M) zero matrix, if M < N.
!>
!>

so she literally factorizes ur complex M-by-N matrix A into ( L 0 ) * Q, no cap πŸ”₯ Q is N-by-N orthogonal, L is lower-triangular M-by-M, and that 0 is a M-by-(N-M) zero matrix β€” but only if M < N, iykyk.


πŸŽ€ Parameters

  • M β€” okay so M is INTEGER, it's the number of rows of the matrix A. M >= 0. slay, keep it non-negative bestie.
  • N β€” N is INTEGER, the number of columns of the matrix A. N >= 0. same energy, no negatives πŸ™ˆ
  • A β€” A is COMPLEX*16 array, dimension (LDA,N). On entry: the M-by-N matrix A. (the main character arrives ✨) On exit: the elements on and below the diagonal of the array contain the M-by-min(M,N) lower trapezoidal matrix L (and L is lower triangular if M <= N, cute); the elements above the diagonal are used to store part of the data structure to represent Q. like she's holding Q's secrets above the diagonal, periodt πŸ’œ
  • LDA β€” LDA is INTEGER, the leading dimension of the array A. LDA >= max(1,M). don't test her on this one.
  • T β€” T is COMPLEX*16 array, dimension (MAX(5,TSIZE)). On exit, if INFO = 0, T(1) returns optimal (or either minimal or optimal, if query is assumed) TSIZE β€” see TSIZE for the details, bestie. The remaining T contains part of the data structure used to represent Q. If one wants to apply or construct Q, then one needs to keep T (in addition to A) and pass it to further subroutines. literally do not throw T away, she's load-bearing 🫢
  • TSIZE β€” TSIZE is INTEGER. If TSIZE >= 5, the dimension of the array T. If TSIZE = -1 or -2, then a workspace query is assumed. The routine only calculates the sizes of the T and WORK arrays, returns these values as the first entries of the T and WORK arrays, and no error message related to T or WORK is issued by XERBLA (she's just peeking, not judging πŸ’…). If TSIZE = -1, the routine calculates optimal size of T for the optimum performance and returns this value in T(1). If TSIZE = -2, the routine calculates minimal size of T and returns this value in T(1).
  • WORK β€” (workspace) COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) contains optimal (or either minimal or optimal, if query was assumed) LWORK. See LWORK for details. the receipts are in WORK(1) fr fr.
  • LWORK β€” LWORK is INTEGER, the dimension of the array WORK. If LWORK = -1 or -2, then a workspace query is assumed. The routine only calculates the sizes of the T and WORK arrays, returns these values as the first entries of the T and WORK arrays, and no error message related to T or WORK is issued by XERBLA. If LWORK = -1, the routine calculates optimal size of WORK for the optimal performance and returns this value in WORK(1). If LWORK = -2, the routine calculates minimal size of WORK and returns this value in WORK(1).
  • INFO β€” INFO is INTEGER
    • = 0: successful exit πŸŽ‰
    • < 0: 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.

(the whole squad, we love a collab 🌈)


🧚 Further Details

!>
!> The goal of the interface is to give maximum freedom to the developers for
!> creating any LQ factorization algorithm they wish. The triangular
!> (trapezoidal) L has to be stored in the lower part of A. The lower part of A
!> and the array T can be used to store any relevant information for applying or
!> constructing the Q factor. The WORK array can safely be discarded after exit.
!>
!> Caution: One should not expect the sizes of T and WORK to be the same from one
!> LAPACK implementation to the other, or even from one execution to the other.
!> A workspace query (for T and WORK) is needed at each execution. However,
!> for a given execution, the size of T and WORK are fixed and will not change
!> from one query to the next.
!>
!>

okay so the vibe of this interface is maximum freedom for the devs β€” build whatever LQ factorization algorithm ur heart desires ✨ the triangular (trapezoidal) L has to live in the lower part of A, and the lower part of A plus the array T can hold literally any relevant info for applying or constructing the Q factor. WORK? she can safely be discarded after exit, she's not staying the night πŸ™ˆ

⚠️ Caution bestie: do NOT expect the sizes of T and WORK to be the same from one LAPACK implementation to another, or even from one execution to another. A workspace query (for T and WORK) is needed at each execution. BUT β€” for a given execution, the size of T and WORK are fixed and will not change from one query to the next. so like, consistent within a run, chaotic across runs πŸ’€

πŸ”₯ Further Details particular to this LAPACK implementation:

!>
!> These details are particular for this LAPACK implementation. Users should not
!> take them for granted. These details may change in the future, and are not likely
!> true for another LAPACK implementation. These details are relevant if one wants
!> to try to understand the code. They are not part of the interface.
!>
!> In this version,
!>
!>          T(2): row block size (MB)
!>          T(3): column block size (NB)
!>          T(6:TSIZE): data structure needed for Q, computed by
!>                           ZLASWLQ or ZGELQT
!>
!>  Depending on the matrix dimensions M and N, and row and column
!>  block sizes MB and NB returned by ILAENV, ZGELQ will use either
!>  ZLASWLQ (if the matrix is short-and-wide) or ZGELQT to compute
!>  the LQ factorization.
!>

read the room: these details are particular to this LAPACK implementation, so do not take them for granted πŸ™ they may change in the future, and they're not likely true for another LAPACK implementation. they're relevant if u wanna try to understand the code β€” they are not part of the interface, ok?

in this version:

  • T(2): row block size (MB)
  • T(3): column block size (NB)
  • T(6:TSIZE): data structure needed for Q, computed by ZLASWLQ or ZGELQT

depending on the matrix dimensions M and N, and row and column block sizes MB and NB returned by ILAENV, ZGELQ will use either ZLASWLQ (if the matrix is short-and-wide) or ZGELQT to compute the LQ factorization. short-and-wide gets ZLASWLQ, that's just her mood πŸ¦‹


Definition at line 172 of file zgelq.f.


πŸ’– Author

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page bestie, you ate that πŸ“ β€” this was LAPACK, Version 3.12.0, straight out of /home/abui...RC/zgelq.f(3), mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from