Generates the complex unitary matrix Q of the QR factorization formed by ?geqrf.

Syntax

lapack_int LAPACKE_cungqr (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_zungqr (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 m-by-m unitary matrix Q of the QR factorization formed by the routines ?geqrf or geqpf. Use this routine after a call to cgeqrf/zgeqrf or cgeqpf/zgeqpf.

Usually Q is determined from the QR factorization of an m by p matrix A with mp. To compute the whole matrix Q, use:

 LAPACKE_?ungqr(matrix_layout, m, m, p, a, lda, tau)

To compute the leading p columns of Q (which form an orthonormal basis in the space spanned by the columns of A):

 LAPACKE_?ungqr(matrix_layout, m, p, p, a, lda, tau)

To compute the matrix Qk of the QR factorization of the leading k columns of the matrix A:

 LAPACKE_?ungqr(matrix_layout, m, m, k, a, lda, tau)

To compute the leading k columns of Qk (which form an orthonormal basis in the space spanned by the leading k columns of the matrix A):

 LAPACKE_?ungqr(matrix_layout, m, k, 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 order of the unitary matrix Q (m 0).

n

The number of columns of Q to be computed

(0 nm).

k

The number of elementary reflectors whose product defines the matrix Q (0 kn).

a, tau

Arrays: a and tau are the arrays returned by cgeqrf/zgeqrf or cgeqpf/zgeqpf.

The size of a is max(1, lda*n) for column major layout and max(1, lda*m) for row major layout .

The size of tau must be at least max(1, k).

lda

The leading dimension of a; at least max(1, m)for column major layout and max(1, n) for row major layout.

Output Parameters

a

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 Q differs from an exactly unitary matrix by a matrix E such that ||E||2 = O(ε)*||A||2, where ε is the machine precision.

The total number of floating-point operations is approximately 16*m*n*k - 8*(m + n)*k2 + (16/3)*k3.

If n = k, the number is approximately (8/3)*n2*(3m - n).

The real counterpart of this routine is orgqr.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.
Seleccione el color del botón adhesivo: 
Orange (only for download buttons)