2 Specification

3 Description

F08CFF (DORGQL) is intended to be used after a call to F08CEF (DGEQLF), which performs a QL factorization of a real matrix A. The orthogonal matrix Q is represented as a product of elementary reflectors.

This routine may be used to generate Q explicitly as a square matrix, or to form only its trailing columns.

Usually Q is determined from the QL factorization of an m by p matrix A with m≥p. The whole of Q may be computed by:

CALL DORGQL(M,M,P,A,LDA,TAU,WORK,LWORK,INFO)

(note that the array A must have at least m columns) or its trailing p columns by:

CALL DORGQL(M,P,P,A,LDA,TAU,WORK,LWORK,INFO)

The columns of Q returned by the last call form an orthonormal basis for the space spanned by the columns of A; thus F08CEF (DGEQLF) followed by F08CFF (DORGQL) can be used to orthogonalize the columns of A.

The information returned by F08CEF (DGEQLF) also yields the QL factorization of the trailing k columns of A, where k<p. The orthogonal matrix arising from this factorization can be computed by:

On entry: further details of the elementary reflectors, as returned by F08CEF (DGEQLF).

7: WORK(max1,LWORK) – REAL (KIND=nag_wp) arrayWorkspace

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

8: LWORK – INTEGERInput

On entry: the dimension of the array WORK as declared in the (sub)program from which F08CFF (DORGQL) 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.