# ?org2l/?ung2l

Generates all or part of the orthogonal/unitary matrix Q from a QL factorization determined by ?geqlf (unblocked algorithm).

## Syntax

call sorg2l( m, n, k, a, lda, tau, work, info )

call dorg2l( m, n, k, a, lda, tau, work, info )

call cung2l( m, n, k, a, lda, tau, work, info )

call zung2l( m, n, k, a, lda, tau, work, info )

## Description

The routine ?org2l/?ung2l generates an m-by-n real/complex matrix Q with orthonormal columns, which is defined as the last n columns of a product of k elementary reflectors of order m:

`Q = H(k)*...*H(2)*H(1)` as returned by ?geqlf.

## Input Parameters

m

  INTEGER. The number of rows of the matrix Q. `m ≥ 0`.

n

  INTEGER. The number of columns of the matrix Q. `m ≥ n ≥ 0`.

k

  INTEGER. The number of elementary reflectors whose product defines the matrix Q. `n ≥ k ≥ 0`.

a

  REAL for sorg2l

  DOUBLE PRECISION for dorg2l

  COMPLEX for cung2l

  COMPLEX*16 for zung2l.

  Array, DIMENSION (lda,n).

  On entry, the (n -k+i)-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,..., k, as returned by ?geqlf in the last k columns of its array argument A.

lda

  INTEGER. The first dimension of the array a. `lda ≥ max(1,m)`.

tau

  REAL for sorg2l

  DOUBLE PRECISION for dorg2l

  COMPLEX for cung2l

  COMPLEX*16 for zung2l.

  Array, DIMENSION (k).

  tau(i) must contain the scalar factor of the elementary reflector H(i), as returned by ?geqlf.

work

  REAL for sorg2l

  DOUBLE PRECISION for dorg2l

  COMPLEX for cung2l

  COMPLEX*16 for zung2l.

  Workspace array, DIMENSION (n).

## Output Parameters

a

  On exit, the m-by-n matrix Q.

info

  INTEGER.

  = 0: successful exit

  < 0: if `info = -i`, the i-th argument has an illegal value

Parent topic: Auxiliary Routines