SRC/zgeqp3.f(3)

πŸ’– zgeqp3.f manual page πŸ’–

okay so this is SRC/zgeqp3.f(3), and it comes from the Library Functions Manual. It's giving "LAPACK bestie explains QR with column pivoting" and we are keeping every single fact, no cap. Let's go. πŸ’…

🌸 NAME 🌸

SRC/zgeqp3.f

That's the name, bestie. The file said "I'll name myself after myself" and honestly? Iconic. πŸŽ€

✨ SYNOPSIS ✨

🫢 Functions/Subroutines 🫢

subroutine zgeqp3 (m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
    ZGEQP3

πŸŽ€ Function/Subroutine Documentation πŸŽ€

Here's the full signature exactly as it lives, because we do not mess with types or argument order. Periodt.

subroutine zgeqp3 (integer m, integer n, complex*16, dimension( lda, * ) a,
    integer lda, integer, dimension( * ) jpvt, complex*16, dimension( * )
    tau, complex*16, dimension( * ) work, integer lwork, double precision,
    dimension( * ) rwork, integer info)
    ZGEQP3

πŸ¦‹ Purpose πŸ¦‹

ZGEQP3 computes a QR factorization with column pivoting of a matrix A:

A*P = Q*R

using Level 3 BLAS. The way that's just the whole purpose, bestie β€” QR, column pivoting, Level 3 BLAS, slay. ✨

πŸ’œ Parameters πŸ’œ

M

M is INTEGER. It's the number of rows of the matrix A, and M >= 0.

N

N is INTEGER. It's the number of columns of the matrix A, and N >= 0.

A

A is COMPLEX*16 array, dimension (LDA,N).

On entry, it's the M-by-N matrix A.

On exit, the upper triangle of the array contains the min(M,N)-by-N upper trapezoidal matrix R; the elements below the diagonal, together with the array TAU, represent the unitary matrix Q as a product of min(M,N) elementary reflectors. πŸ¦‹

LDA

LDA is INTEGER. It's the leading dimension of the array A, and LDA >= max(1,M).

JPVT

JPVT is INTEGER array, dimension (N).

On entry, if JPVT(J).ne.0, the J-th column of A is permuted to the front of A*P (a leading column); if JPVT(J)=0, the J-th column of A is a free column.

On exit, if JPVT(J)=K, then the J-th column of A*P was the K-th column of A. Bestie, it's giving "column lore" and we respect it. πŸ’…

TAU

TAU is COMPLEX*16 array, dimension (min(M,N)). It holds the scalar factors of the elementary reflectors.

WORK

WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)).

On exit, if INFO=0, WORK(1) returns the optimal LWORK.

LWORK

LWORK is INTEGER. It's the dimension of the array WORK, and LWORK >= N+1.

For optimal performance LWORK >= ( N+1 )*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. That's the whole vibe check on LWORK = -1. 🫢

RWORK

RWORK is DOUBLE PRECISION array, dimension (2*N).

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.

πŸ”₯ Further Details πŸ”₯

The matrix Q is represented as a product of elementary reflectors:

Q = H(1) H(2) . . . H(k), where k = min(m,n).

Each H(i) has the form:

H(i) = I - tau * v * v**H

where tau is a complex scalar, and v is a real/complex vector with v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), and tau in TAU(i). That's the whole reflector situation, and yes it ate. πŸ”₯

🌈 Contributors 🌈

  • G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
  • X. Sun, Computer Science Dept., Duke University, USA

Definition at line 157 of file zgeqp3.f.

πŸ“œ Author πŸ“œ

Generated automatically by Doxygen for LAPACK from the source code.


That's the whole page, bestie! πŸ’– Final sign-off vibes: LAPACK Version 3.12.0 Β· SRC/zgeqp3.f(3). Date? Not on this footer β€” just the version and the page. Mwah πŸ’…πŸŽ€

πŸ“¦ where this page comes from