?geqp3
?geqp3
Computes the QR factorization of a general m-by-n matrix with column pivoting using level 3 BLAS.
Syntax
lapack_int
LAPACKE_sgeqp3
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
float
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
float
*
tau
);
lapack_int
LAPACKE_dgeqp3
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
double
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
double
*
tau
);
lapack_int
LAPACKE_cgeqp3
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
lapack_complex_float
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
lapack_complex_float
*
tau
);
lapack_int
LAPACKE_zgeqp3
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
lapack_complex_double
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
lapack_complex_double
*
tau
);
Include Files
- mkl.h
Description
The routine forms the (see Orthogonal Factorizations) using Level 3 BLAS. Here
QR
factorization of a general m
-by-n
matrix A
with column pivoting: A*P
= Q*R
P
denotes an n
-by-n
permutation matrix. Use this routine instead of geqpf for better performance.The routine does not form the matrix
Q
explicitly. Instead, Q
is represented as a product of min(m
, n
) elementary reflectors. Routines are provided to work with Q
in this representation.Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- m
- The number of rows in the matrixA().m≥0
- n
- The number of columns inA().n≥0
- a
- Arrayaof size max(1,lda*n) for column major layout and max(1,lda*m) for row major layout contains the matrixA.
- lda
- The leading dimension ofa; at least max(1,m)for column major layout and max(1,.n) for row major layout
- jpvt
- Array, size at leastmax(1,.n)On entry, ifjpvt[i- 1], the≠0i-th column ofAis moved to the beginning ofAPbefore the computation, and fixed in place during the computation.Ifjpvt[i- 1]= 0, thei-th column ofAis a free column (that is, it may be interchanged during the computation with any other free column).
Output Parameters
- a
- Overwritten by the factorization data as follows:The elements on and above the diagonal of the array contain the min(m,n)-by-nupper trapezoidal matrixR(Ris upper triangular ifm≥n); the elements below the diagonal, with the arraytau, present the orthogonal matrixQas a product of min(m,n) elementary reflectors (see Orthogonal Factorizations).
- tau
- Array, size at least max (1, min(m,n)). Contains scalar factors of the elementary reflectors for the matrixQ.
- jpvt
- Overwritten by details of the permutation matrixPin the factorization. More precisely, the columns ofA*P=Q*RAPare the columns ofAin the following order:.jpvt[0],jpvt[1], ...,jpvt[n- 1]
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , the
info
= -i
i
-th parameter had an illegal value.Application Notes
To solve a set of least squares problems minimizing
||
for all columns A*x
- b
||2
b
of a given matrix B
, you can call the following:(The columns of the computed
X
are the permuted least squares solution vectors x
; the output array jpvt
specifies the permutation order.)To compute the elements of
Q
explicitly, call