?unglq
?unglq
Generates the complex unitary matrix Q of the LQ factorization formed by
?gelqf
.Syntax
lapack_int
LAPACKE_cunglq
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_complex_float
*
a
,
lapack_int
lda
,
const
lapack_complex_float
*
tau
);
lapack_int
LAPACKE_zunglq
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_complex_double
*
a
,
lapack_int
lda
,
const
lapack_complex_double
*
tau
);
Include Files
- mkl.h
Description
The routine generates the whole or part of
n
-by-n
unitary matrix Q
of the LQ
factorization formed by the routines gelqf. Use this routine after a call to cgelqf
/zgelqf
. Usually . To compute the whole matrix
Q
is determined from the LQ
factorization of an p
-by-n
matrix A
with n
< p
Q
, use: info = LAPACKE_?unglq(matrix_layout, n, n, p, a, lda, tau)
To compute the leading
p
rows of Q
, which form an orthonormal basis in the space spanned by the rows of A
, use: info = LAPACKE_?unglq(matrix_layout, p, n, p, a, lda, tau)
To compute the matrix of the
Q
k
LQ
factorization of the leading k
rows of A
, use: info = LAPACKE_?unglq(matrix_layout, n, n, k, a, lda, tau)
To compute the leading , which form an orthonormal basis in the space spanned by
the leading
k
rows of Q
k
k
rows of A
, use: info = LAPACKE_?ungqr(matrix_layout, k, n, k, a, lda, tau)
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 ofQto be computed (0).≤m≤n
- n
- The order of the unitary matrixQ().n≥m
- k
- The number of elementary reflectors whose product defines the matrixQ(0).≤k≤m
- a,tau
- Arrays:a(size max(1,andlda*n) for column major layout and max(1,lda*m) for row major layout)tauare the arrays returned bycgelqf/zgelqf.The dimension oftaumust be at least max(1,k).
- lda
- The leading dimension ofa; at least max(1,m)for column major layout and max(1,.n) for row major layout
Output Parameters
- a
- Overwritten bymleading rows of then-by-nunitary matrixQ.
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
Q
differs from an exactly unitary matrix by a matrix E
such that ||
, where E
||2
= O
(ε
)*||A
||2
ε
is the machine precision.The total number of floating-point operations is approximately
16*
. m
*n
*k
- 8*(m
+ n
)*k
2
+ (16/3)*k
3
If , the number is approximately
m
= k
(8/3)*
.m
2
*(3n
- m
)The real counterpart of this routine is orglq.