Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?gelq2

Computes the LQ factorization of a general rectangular matrix using an unblocked algorithm.

Syntax

call sgelq2( m, n, a, lda, tau, work, info )

call dgelq2( m, n, a, lda, tau, work, info )

call cgelq2( m, n, a, lda, tau, work, info )

call zgelq2( m, n, a, lda, tau, work, info )

Include Files

  • mkl.fi

Description

The routine computes an LQ factorization of a real/complex m-by-n matrix A as A = L*Q.

The routine does not form the matrix Q explicitly. Instead, Q is represented as a product of min(m, n) elementary reflectors :

Q = H(k) ... H(2) H(1) (or Q = H(k)H ... H(2)HH(1)H for complex flavors), where k = min(m, n)

Each H(i) has the form

H(i) = I - tau*v*vT for real flavors, or

H(i) = I - tau*v*vH for complex flavors,

where tau is a real/complex scalar stored in tau(i), and v is a real/complex vector with v1:i-1 = 0 and vi = 1.

On exit, vi+1:n (for real functions) and conjg(vi+1:n) (for complex functions) are stored in a(i, i+1:n).

Input Parameters

The data types are given for the Fortran interface.

m

INTEGER. The number of rows in the matrix A (m 0).

n

INTEGER. The number of columns in A (n 0).

a, work

REAL for sgelq2

DOUBLE PRECISION for dgelq2

COMPLEX for cgelq2

DOUBLE COMPLEX for zgelq2.

Arrays: a(lda,*) contains the m-by-n matrix A. The second dimension of a must be at least max(1, n).

work(m) is a workspace array.

lda

INTEGER. The leading dimension of a; at least max(1, m) .

Output Parameters

a

Overwritten by the factorization data as follows:

on exit, the elements on and below the diagonal of the array a contain the m-by-min(n,m) lower trapezoidal matrix L (L is lower triangular if nm); the elements above the diagonal, with the array tau, represent the orthogonal/unitary matrix Q as a product of min(n,m) elementary reflectors.

tau

REAL for sgelq2

DOUBLE PRECISION for dgelq2

COMPLEX for cgelq2

DOUBLE COMPLEX for zgelq2.

Array, size at least max(1, min(m, n)).

Contains scalar factors of the elementary reflectors.

info

INTEGER.

If info = 0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.

If info = -1011, memory allocation error occurred.