Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

?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
QR
factorization of a general
m
-by-
n
matrix
A
with column pivoting:
A*P
=
Q*R
(see Orthogonal Factorizations) using Level 3 BLAS. Here
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 matrix
A
(
m
0
).
n
The number of columns in
A
(
n
0
).
a
Array
a
of size max(1,
lda
*
n
) for column major layout and max(1,
lda
*
m
) for row major layout contains the matrix
A
.
lda
The leading dimension of
a
; 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, if
jpvt
[
i
- 1]
0
, the
i
-th column of
A
is moved to the beginning of
AP
before the computation, and fixed in place during the computation.
If
jpvt
[
i
- 1]
= 0
, the
i
-th column of
A
is 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-
n
upper trapezoidal matrix
R
(
R
is upper triangular if
m
n
); the elements below the diagonal, with the array
tau
, present the orthogonal matrix
Q
as 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 matrix
Q
.
jpvt
Overwritten by details of the permutation matrix
P
in the factorization
A*P
=
Q*R
. More precisely, the columns of
AP
are the columns of
A
in the following order:
jpvt
[0],
jpvt
[1], ...,
jpvt
[
n
- 1]
.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
To solve a set of least squares problems minimizing
||
A*x
-
b
||
2
for all columns
b
of a given matrix
B
, you can call the following:
?geqp3
(this routine)
to factorize
A*P
=
Q*R
;
to compute
C
=
Q
T
*B
(for real matrices);
to compute
C
=
Q
H
*B
(for complex matrices);
trsm (a BLAS routine)
to solve
R*X
=
C
.
(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
(for real matrices)
(for complex matrices).

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.