?geqpf
?geqpf
Computes the QR factorization of a general m-by-n matrix with pivoting.
Syntax
lapack_int
LAPACKE_sgeqpf
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
float
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
float
*
tau
);
lapack_int
LAPACKE_dgeqpf
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
double
*
a
,
lapack_int
lda
,
lapack_int
*
jpvt
,
double
*
tau
);
lapack_int
LAPACKE_cgeqpf
(
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_zgeqpf
(
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 is deprecated and has been replaced by routine geqp3.
The routine (see Orthogonal Factorizations). Here
?geqpf
forms the 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.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 least max(1,n).On entry, ifjpvt[i- 1]> 0, thei-th column ofAis moved to the beginning ofA*Pbefore the computation, and fixed in place during the computation.Ifjpvt[i- 1]= 0, theith 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 additional information on the matrixQ.
- jpvt
- Overwritten by details of the permutation matrixPin the factorization. More precisely, the columns ofA*P=Q*RA*Pare 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
The computed factorization is the exact factorization of a matrix , where
A
+ E
||
.E
||2
= O
(ε
)||A
||2
The approximate number of floating-point operations for real flavors is
- (4/3)n3
- if,m=n
- (2/3)n2(3m-n)
- if,m>n
- (2/3)m2(3n-m)
- if.m<n
The number of operations for complex flavors is 4 times greater.
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