Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?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', mn ≥ min(m, k).

If vect = 'P', nm ≥ 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 mn.

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 mn;

(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.