?ungbr
?ungbr
Generates the complex unitary matrix Q or .
P
determined by H
?gebrd
Syntax
lapack_int
LAPACKE_cungbr
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_complex_float
*
a
,
lapack_int
lda
,
const
lapack_complex_float
*
tau
);
lapack_int
LAPACKE_zungbr
(
int
matrix_layout
,
char
vect
,
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 the unitary matrices formed by the routines gebrd. Use this routine after a call to
Q
and P
H
cgebrd
/zgebrd
. All valid combinations of arguments are described in Input Parameters
; in most cases you need the following:To compute the whole
m
-by-m
matrix Q
, use:LAPACKE_?ungbr(matrix_layout, 'Q', m, m, n, a, lda, tau)
(note that the
array
a
must have at least m
columns).To form the , use:
n
leading columns of Q
if m
> n
LAPACKE_?ungbr(matrix_layout, 'Q', m, n, n, a, lda, tau)
To compute the whole , use:
n
-by-n
matrix P
H
LAPACKE_?ungbr(matrix_layout, 'P', n, n, m, a, lda, tau)
(note that the array
a
must have at least n
rows).To form the if , use:
m
leading rows of P
H
m
< n
LAPACKE_?ungbr(matrix_layout, 'P', m, m, n, a, lda, tau)
Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- vect
- Must be'Q'or'P'.If, the routine generates the matrixvect='Q'Q.If, the routine generates the matrixvect='P'P.H
- m
- The number of required rows ofQorP.H
- n
- The number of required columns ofQorP.H
- k
- One of the dimensions ofAin?gebrd:If, the number of columns invect='Q'A;If, the number of rows invect='P'A.Constraints:,m≥0,n≥0.k≥0For:vect='Q'ifk≤n≤m, orm>kifm=n.m≤kFor:vect='P'ifk≤m≤n, orn>kifm=n.n≤k
- a
- Arrays:a, size at leastis the arraylda*nfor column major layout andlda*mfor row major layout,aas returned by?gebrd.
- lda
- The leading dimension ofa; at least max(1,m)for column major layout and max(1,.n) for row major layout
- tau
- For, the arrayvect='Q'tauqas returned by?gebrd. For, the arrayvect='P'taupas returned by?gebrd.The dimension oftaumust be at least max(1, min(m,k)) for, or max(1, min(vect='Q'm,k)) for.vect='P'
Output Parameters
- a
- Overwritten by the orthogonal matrixQorP(or the leading rows or columns thereof) as specified byTvect,m, andn.
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 matrix
Q
differs from an exactly orthogonal matrix by a matrix E
such that ||
.E
||2
= O
(ε
)The approximate numbers of possible floating-point operations are listed below:
To compute the whole matrix
Q
:(16/3)
if n
(3m
2
- 3m
*n
+ n
2
)m
> n
(16/3)
if m
3
m
≤
n
To form the :
n
leading columns of
Q
when m
> n
(8/3)
.n
2
(3m
- n
2
)To compute the whole matrix :
P
H
(16/3)
if n
3
m
≥
n
(16/3)
if m
(3n
2
- 3m
*n
+ m
2
)m
< n
To form the when :
m
leading columns of P
H
m
< n
(8/3)
if n
2
(3m
- n
2
)m
> n
The real counterpart of this routine is orgbr.