3 Description

where L is an n by n lower triangular matrix and Q is an m by m unitary matrix. If m<n the factorization is given by

A=QL,

where L is an m by n lower trapezoidal matrix and Q is again an m by m unitary matrix. In the case where m>n the factorization can be expressed as

A=Q1Q20L=Q2L,

where Q1 consists of the first m-n columns of Q, and Q2 the remaining n columns.

The matrix Q is not formed explicitly but is represented as a product of minm,n elementary reflectors (see Section 3.3.6 in the F08 Chapter Introduction for details). Routines are provided to work with Q in this representation (see Section 8).

Note also that for any k<n, the information returned in the last k columns of the array A represents a QL factorization of the last k columns of the original matrix A.

On exit: if m≥n, the lower triangle of the subarray Am-n+1:m,1:n contains the n by n lower triangular matrix L.

If m≤n, the elements on and below the n-mth superdiagonal contain the m by n lower trapezoidal matrix L. The remaining elements, with the array TAU, represent the
unitary
matrix Q as a product of elementary reflectors (see Section 3.3.6 in the F08 Chapter Introduction).

4: LDA – INTEGERInput

On entry: the first dimension of the array A as declared in the (sub)program from which F08CSF (ZGEQLF) is called.

On exit: the scalar factors of the elementary reflectors (see Section 8).

6: WORK(max1,LWORK) – COMPLEX (KIND=nag_wp) arrayWorkspace

On exit: if INFO=0, the real part of WORK1 contains the minimum value of LWORK required for optimal performance.

7: LWORK – INTEGERInput

On entry:
the dimension of the array WORK as declared in the (sub)program from which F08CSF (ZGEQLF) is called.

If LWORK=-1, a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued.

Suggested value:
for optimal performance, LWORK≥N×nb, where nb is the optimal block size.