Visible to Intel only — GUID: GUID-793811F1-006B-41C4-ACC9-84805F6B446C
Visible to Intel only — GUID: GUID-793811F1-006B-41C4-ACC9-84805F6B446C
?orgbr
Generates the real orthogonal matrix Q or PT determined by ?gebrd.
Syntax
lapack_int LAPACKE_sorgbr (int matrix_layout, char vect, lapack_int m, lapack_int n, lapack_int k, float* a, lapack_int lda, const float* tau);
lapack_int LAPACKE_dorgbr (int matrix_layout, char vect, lapack_int m, lapack_int n, lapack_int k, double* a, lapack_int lda, const double* tau);
Include Files
- mkl.h
Description
The routine generates the whole or part of the orthogonal matrices Q and PT formed by the routines gebrd. Use this routine after a call to sgebrd/dgebrd. 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:
LAPACKE_?orgbr(matrix_layout, 'Q', m, m, n, a, lda, tau )
(note that the array a must have at least m columns).
To form the n leading columns of Q if m > n:
LAPACKE_?orgbr(matrix_layout, 'Q', m, n, n, a, lda, tau )
To compute the whole n-by-n matrix PT:
LAPACKE_?orgbr(matrix_layout, 'P', n, n, m, a, lda, tau )
(note that the array a must have at least n rows).
To form the m leading rows of PT if m < n:
LAPACKE_?orgbr(matrix_layout, 'P', m, n, m, 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 vect = 'Q', the routine generates the matrix Q.
If vect = 'P', the routine generates the matrix PT.
- m, n
-
The number of rows (m) and columns (n) in the matrix Q or PT to be returned (m≥ 0, n≥ 0).
If vect = 'Q', m ≥ n ≥ min(m, k).
If vect = 'P', n ≥ m ≥ min(n, k).
- k
-
If vect = 'Q', the number of columns in the original m-by-k matrix reduced by gebrd.
If vect = 'P', the number of rows in the original k-by-n matrix reduced by gebrd.
- a
-
Array, size at least lda*n for column major layout and lda*m for row major layout. The vectors which define the elementary reflectors, as returned by gebrd.
- lda
-
The leading dimension of the array a. lda ≥ max(1, m) for column major layout and at least max(1, n) for row major layout .
- tau
-
Array, size min (m,k) if vect = 'Q', min (n,k) if vect = 'P'. Scalar factor of the elementary reflector H(i) or G(i), which determines Q and PT as returned by gebrd in the array tauq or taup.
Output Parameters
- a
-
Overwritten by the orthogonal matrix Q or PT (or the leading rows or columns thereof) as specified by vect, m, and n.
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
The computed matrix Q differs from an exactly orthogonal matrix by a matrix E such that ||E||2 = O(ε).
The approximate numbers of floating-point operations for the cases listed in Description are as follows:
To form the whole of Q:
(4/3)*n*(3m2 - 3m*n + n2) if m > n;
(4/3)*m3 if m≤n.
To form the n leading columns of Q when m > n:
(2/3)*n2*(3m - n) if m > n.
To form the whole of PT:
(4/3)*n3 if m≥n;
(4/3)*m*(3n2 - 3m*n + m2) if m < n.
To form the m leading columns of PT when m < n:
(2/3)*n2*(3m - n) if m > n.
The complex counterpart of this routine is ungbr.