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


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 )


lapack_int LAPACKE_<?>gelq2 (int matrix_layout, lapack_int m, lapack_int n, <datatype> * a, lapack_int lda, <datatype> * tau);

Include Files

  • Fortran: mkl.fi
  • C: mkl.h


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 v(1:i-1) = 0 and v(i) = 1.

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

Input Parameters

The data types are given for the Fortran interface. A <datatype> placeholder, if present, is used for the C interface data types in the C interface section above. See C Interface Conventions for the C interface principal conventions and type definitions.


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


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

a, work

REAL for sgelq2


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.


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

Output Parameters


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 n m); the elements above the diagonal, with the array tau, represent the orthogonal/unitary matrix Q as a product of min(n,m) elementary reflectors.


REAL for sgelq2


COMPLEX for cgelq2

DOUBLE COMPLEX for zgelq2.

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

Contains scalar factors of the elementary reflectors.



If info = 0, the execution is successful.

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

Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.