SRC/ctpqrt.f(3)

✨ NAME ✨

SRC/ctpqrt.f β€” this is the LAPACK Library Functions Manual page for the CTPQRT subroutine, bestie. It’s giving blocked QR factorization with the compact WY representation, and honestly? Iconic. πŸ’…

πŸ’– SYNOPSIS πŸ’–

πŸ“š Functions/Subroutines πŸ“š

  • subroutine ctpqrt (m, n, l, nb, a, lda, b, ldb, t, ldt, work, info) β€” CTPQRT

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

subroutine ctpqrt (integer m, integer n, integer l, integer nb, complex, dimension( lda, * ) a, integer lda, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( ldt, * ) t, integer ldt, complex, dimension( * ) work, integer info)

CTPQRT

🌸 Purpose 🌸

CTPQRT computes a blocked QR factorization of a complex matrix C. C is made of a triangular block A and a pentagonal block B, and the routine uses the compact WY representation for Q. Slay. ✨

🌈 Parameters 🌈

  • M β€” M is INTEGER. It’s the number of rows of the matrix B. Constraint: M >= 0. 🫢
  • N β€” N is INTEGER. It’s the number of columns of the matrix B, and the order of the triangular matrix A. Constraint: N >= 0.
  • L β€” L is INTEGER. It’s the number of rows of the upper trapezoidal part of B. Constraint: MIN(M,N) >= L >= 0. See Further Details. πŸ‘€
  • NB β€” NB is INTEGER. It’s the block size used in the blocked QR. Constraint: N >= NB >= 1.
  • A β€” A is COMPLEX array, dimension (LDA,N). On entry, it’s the upper triangular N-by-N matrix A. On exit, the elements on and above the diagonal of the array contain the upper triangular matrix R. πŸ’–
  • LDA β€” LDA is INTEGER. It’s the leading dimension of the array A. Constraint: LDA >= max(1,N).
  • B β€” B is COMPLEX array, dimension (LDB,N). On entry, it’s the pentagonal M-by-N matrix B. The first M-L rows are rectangular, and the last L rows are upper trapezoidal. On exit, B contains the pentagonal matrix V. See Further Details. πŸ¦‹
  • LDB β€” LDB is INTEGER. It’s the leading dimension of the array B. Constraint: LDB >= max(1,M).
  • T β€” T is COMPLEX array, dimension (LDT,N). These are the upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See Further Details. πŸŽ€
  • LDT β€” LDT is INTEGER. It’s the leading dimension of the array T. Constraint: LDT >= NB.
  • WORK β€” WORK is COMPLEX array, dimension (NB*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 πŸ”

Okay so the input matrix C is a (N+M)-by-N matrix:

               C = [ A ]
                   [ B ]

where A is an upper triangular N-by-N matrix, and B is an M-by-N pentagonal matrix consisting of a (M-L)-by-N rectangular matrix B1 on top of an L-by-N upper trapezoidal matrix B2:

               B = [ B1 ]  <- (M-L)-by-N rectangular
                   [ B2 ]  <-     L-by-N upper trapezoidal.

The upper trapezoidal matrix B2 consists of the first L rows of an N-by-N upper triangular matrix, where 0 <= L <= MIN(M,N). If L=0, B is rectangular M-by-N; if M=L=N, B is upper triangular. 🌸

The matrix W stores the elementary reflectors H(i) in the i-th column below the diagonal (of A) in the (N+M)-by-N input matrix C:

               C = [ A ]  <- upper triangular N-by-N
                   [ B ]  <- M-by-N pentagonal

so that W can be represented as:

               W = [ I ]  <- identity, N-by-N
                   [ V ]  <- M-by-N, same form as B.

Thus, all of the information needed for W is contained on exit in B, which we call V above. Note that V has the same form as B; that is:

               V = [ V1 ] <- (M-L)-by-N rectangular
                   [ V2 ] <-     L-by-N upper trapezoidal.

The columns of V represent the vectors which define the H(i)’s. ✨

The number of blocks is B = ceiling(N/NB), where each block is of order NB except for the last block, which is of order IB = N - (B-1)*NB. For each of the B blocks, an upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T’s are stored in the NB-by-N matrix T as:

               T = [T1 T2 ... TB].

Definition at line 187 of file ctpqrt.f.

πŸ€– Author πŸ€–

Generated automatically by Doxygen for LAPACK from the source code.


πŸ’– Cute little sign-off: this is LAPACK Version 3.12.0, source/page SRC/ctpqrt.f(3), and the footer doesn’t list a date, so we’re not inventing one, bestie. Bye! 🫢✨

πŸ“¦ where this page comes from