?tpqrt2

Computes a QR factorization of a real or complex "triangular-pentagonal" matrix, which is composed of a triangular block and a pentagonal block, using the compact WY representation for Q.

Syntax

FORTRAN 77:

call stpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)

call dtpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)

call ctpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)

call ztpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)

FORTRAN 95:

call tpqrt2(a, b, t [, info])

C:

lapack_int LAPACKE_stpqrt2 (int matrix_layout, lapack_int m, lapack_int n, lapack_int l, float * a, lapack_int lda, float * b, lapack_int ldb, float * t, lapack_int ldt);

lapack_int LAPACKE_dtpqrt2 (int matrix_layout, lapack_int m, lapack_int n, lapack_int l, double * a, lapack_int lda, double * b, lapack_int ldb, double * t, lapack_int ldt);

lapack_int LAPACKE_ctpqrt2 (int matrix_layout, lapack_int m, lapack_int n, lapack_int l, lapack_complex_float * a, lapack_int lda, lapack_complex_float * b, lapack_int ldb, lapack_complex_float * t, lapack_int ldt );

lapack_int LAPACKE_ztpqrt2 (int matrix_layout, lapack_int m, lapack_int n, lapack_int l, lapack_complex_double * a, lapack_int lda, lapack_complex_double * b, lapack_int ldb, lapack_complex_double * t, lapack_int ldt );

Include Files

  • Fortran: mkl.fi
  • Fortran 95: lapack.f90
  • C: mkl.h

Description

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


Equation

where A is an n-by-n upper triangular matrix, and B is an m-by-n pentagonal matrix consisting of an (m-l)-by-n rectangular matrix B1 on top of an l-by-n upper trapezoidal matrix B2:


Equation

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 an m-by-n rectangular matrix. If m=l=n, B is upper triangular. The matrix W contains the elementary reflectors H(i) in the ith column below the diagonal (of A) in the (n+m)-by-n input matrix C so that W can be represented as


Equation

Thus, V contains all of the information needed for W, and is returned in array b.

Note

V has the same form as B:


Equation

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

The (m+n)-by-(m+n) block reflector H is then given by

H = I - W*T*WT for real flavors, and

H = I - W*T*WH for complex flavors

where WT is the transpose of W, WH is the conjugate transpose of W, and T is the upper triangular factor of the block reflector.

Input Parameters

m

INTEGER. The total number of rows in the matrix B (m ≥ 0).

n

INTEGER. The number of columns in B and the order of the triangular matrix A (n ≥ 0).

l

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

a, b

REAL for stpqrt2

DOUBLE PRECISION for dtpqrt2

COMPLEX for ctpqrt2

COMPLEX*16 for ztpqrt2.

Arrays: a DIMENSION (lda, n) contains the n-by-n upper triangular matrix A.

b DIMENSION (ldb, n), the pentagonal m-by-n matrix B. The first (m-l) rows contain the rectangular B1 matrix, and the next l rows contain the upper trapezoidal B2 matrix.

lda

INTEGER. The leading dimension of a; at least max(1, n).

ldb

INTEGER. The leading dimension of b; at least max(1, m).

ldt

INTEGER. The leading dimension of t; at least max(1, n).

Output Parameters

a

The elements on and above the diagonal of the array contain the upper triangular matrix R.

b

The pentagonal matrix V.

t

REAL for stpqrt2

DOUBLE PRECISION for dtpqrt2

COMPLEX for ctpqrt2

COMPLEX*16 for ztpqrt2.

Array, DIMENSION (ldt, n).

The upper n-by-n upper triangular factor T of the block reflector.

info

INTEGER.

If info = 0, the execution is successful.

If info < 0 and info = -i, the ith argument had an illegal value.

For more complete information about compiler optimizations, see our Optimization Notice.