Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?tplqt

Computes a blocked LQ factorization of a complex "triangular-pentagonal" matrix composed of a triangular block A and pentagonal block B, using the compact WY representation for Q.

call stplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)

call dtplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)

call ctplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)

call ztplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)

Description

?tplqt computes a blocked LQ factorization of a real or complex "triangular-pentagonal" matrix C, which is composed of a triangular block A and pentagonal block B, using the compact WY representation for Q.

The input matrix C is an m-by-(m+n) matrix:

C = [ A ] [ B ]

where A is a lower triangular m-by-m matrix, and B is an m-by-n pentagonal matrix consisting of an m-by-(n-l) rectangular matrix B1 to the left of an m-by-l lower trapezoidal matrix B2:

[ B ] = [ B1 ] [ B2 ]

[B1 ] <- m-by-(n-l) rectangular

[ B2 ] <- m-by-l lower trapezoidal.

The lower trapezoidal matrix B2 consists of the first l columns of an m-by-m lower triangular matrix, where 0 l min(m,n). If l=0, b is rectangular m-by-n; if m=l=n, b is lower triangular.

The matrix W stores the elementary reflectors H(i) in the i-th row above the diagonal (of A) in the m-by-(m+n) input matrix C:

[ C ] = [ A ] [ B ]

[ A ] <- lower triangular m-by-m

[ B ] <- m-by-n pentagonal

so that W can be represented as

[ W ] = [ I ] [ V ]

[ I ] <- m-by-m identity matrix

[ V ] <- m-by-n, same form as B.

Thus, all of information needed for W is contained on exit in the array b, called V in the preceding. Note that V has the same form as B; that is,

[ V ] = [ V1 ] [ V2 ]

[ V1 ] <- m-by-(n-l) rectangular

[ V2 ] <- m-by-l lower trapezoidal.

The rows of V represent the vectors which define the H(i) elementary reflectors .

The number of blocks is B = ceiling(m/mb), where each block is of order mb except for the last block, which is of order ib = m - (m - 1)*mb. For each of the B blocks, a upper triangular block reflector factor is computed:

T1, T2, ..., TB.

The mb-by-mb (and ib-by-ib for the last block) Tis are stored in the mb-by-n array t as

T = [T1T2 ... TB].

Input Parameters

m

INTEGER. The number of rows of the matrix B, and the order of the triangular matrix A. m 0.

n

INTEGER. The number of columns of the matrix B. n 0.

l

INTEGER. The number of rows of the lower trapezoidal part of B. min(m, n) l 0.

mb

INTEGER. The block size to be used in the blocked QR. mmb 1.

a

REAL for stplqt

DOUBLE PRECISION for dtplqt

COMPLEX for ctplqt

COMPLEX*16 for ztplqt

Array of size (lda,m). On entry, the lower triangular m-by-m matrix A.

lda

INTEGER. The leading dimension of the array a. lda max(1,m).

b

REAL for stplqt

DOUBLE PRECISION for dtplqt

COMPLEX for ctplqt

COMPLEX*16 for ztplqt

Array of size (ldb,n). On entry, the pentagonal m-by-n matrix B. The first n-l columns are rectangular, and the last l columns are lower trapezoidal.

ldb

INTEGER. The leading dimension of the array b. ldb max(1,m).

ldt

INTEGER. The leading dimension of the array t. ldtmb.

Output Parameters

a

On exit, the elements on and below the diagonal of the array contain the lower triangular matrix L.

b

On exit, b contains the pentagonal matrix V.

t

REAL for stplqt

DOUBLE PRECISION for dtplqt

COMPLEX for ctplqt

COMPLEX*16 for ztplqt

Array of size (ldt,n). The lower triangular block reflectors stored in compact form as a sequence of upper triangular blocks.

work

REAL for stplqt

DOUBLE PRECISION for dtplqt

COMPLEX for ctplqt

COMPLEX*16 for ztplqt

Array of size (mb*m).

info

INTEGER.

info = 0: successful exit.

info < 0: if info = -i, the i-th argument had an illegal value.