f08 Chapter Contents
f08 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_zgeqlf (f08csc)

## 1  Purpose

nag_zgeqlf (f08csc) computes a $QL$ factorization of a complex $m$ by $n$ matrix $A$.

## 2  Specification

 #include #include
 void nag_zgeqlf (Nag_OrderType order, Integer m, Integer n, Complex a[], Integer pda, Complex tau[], NagError *fail)

## 3  Description

nag_zgeqlf (f08csc) forms the $QL$ factorization of an arbitrary rectangular complex $m$ by $n$ matrix.
If $m\ge n$, the factorization is given by:
 $A = Q 0 L ,$
where $L$ is an $n$ by $n$ lower triangular matrix and $Q$ is an $m$ by $m$ unitary matrix. If $m 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 = Q1 Q2 0 L = Q2 L ,$
where ${Q}_{1}$ consists of the first $m-n$ columns of $Q$, and ${Q}_{2}$ the remaining $n$ columns.
The matrix $Q$ is not formed explicitly but is represented as a product of $\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left(m,n\right)$ elementary reflectors (see Section 3.3.6 in the f08 Chapter Introduction for details). Functions are provided to work with $Q$ in this representation (see Section 8).
Note also that for any $k, the information returned in the last $k$ columns of the array a represents a $QL$ factorization of the last $\mathrm{k}$ columns of the original matrix $A$.

## 4  References

Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999) LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia http://www.netlib.org/lapack/lug
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

## 5  Arguments

1:     orderNag_OrderTypeInput
On entry: the order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by ${\mathbf{order}}=\mathrm{Nag_RowMajor}$. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint: ${\mathbf{order}}=\mathrm{Nag_RowMajor}$ or Nag_ColMajor.
2:     mIntegerInput
On entry: $m$, the number of rows of the matrix $A$.
Constraint: ${\mathbf{m}}\ge 0$.
3:     nIntegerInput
On entry: $n$, the number of columns of the matrix $A$.
Constraint: ${\mathbf{n}}\ge 0$.
4:     a[$\mathit{dim}$]ComplexInput/Output
Note: the dimension, dim, of the array a must be at least
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{pda}}×{\mathbf{n}}\right)$ when ${\mathbf{order}}=\mathrm{Nag_ColMajor}$;
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{m}}×{\mathbf{pda}}\right)$ when ${\mathbf{order}}=\mathrm{Nag_RowMajor}$.
Where ${\mathbf{A}}\left(i,j\right)$ appears in this document, it refers to the array element
• ${\mathbf{a}}\left[\left(j-1\right)×{\mathbf{pda}}+i-1\right]$ when ${\mathbf{order}}=\mathrm{Nag_ColMajor}$;
• ${\mathbf{a}}\left[\left(i-1\right)×{\mathbf{pda}}+j-1\right]$ when ${\mathbf{order}}=\mathrm{Nag_RowMajor}$.
On entry: the $m$ by $n$ matrix $A$.
On exit: if $m\ge n$, the lower triangle of the subarray ${\mathbf{A}}\left(m-n+1:m,1:n\right)$ contains the $n$ by $n$ lower triangular matrix $L$.
If $m\le n$, the elements on and below the $\left(n-m\right)$th 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).
5:     pdaIntegerInput
On entry: the stride separating row or column elements (depending on the value of order) in the array a.
Constraints:
• if ${\mathbf{order}}=\mathrm{Nag_ColMajor}$, ${\mathbf{pda}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{m}}\right)$;
• if ${\mathbf{order}}=\mathrm{Nag_RowMajor}$, ${\mathbf{pda}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{n}}\right)$.
6:     tau[$\mathit{dim}$]ComplexOutput
Note: the dimension, dim, of the array tau must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{m}},{\mathbf{n}}\right)\right)$.
On exit: the scalar factors of the elementary reflectors (see Section 8).
7:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{m}}\ge 0$.
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}\ge 0$.
On entry, ${\mathbf{pda}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{pda}}>0$.
NE_INT_2
On entry, ${\mathbf{pda}}=〈\mathit{\text{value}}〉$ and ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{pda}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{m}}\right)$.
On entry, ${\mathbf{pda}}=〈\mathit{\text{value}}〉$ and ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{pda}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{n}}\right)$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.

## 7  Accuracy

The computed factorization is the exact factorization of a nearby matrix $\left(A+E\right)$, where
 $E2 = Oε A2 ,$
and $\epsilon$ is the machine precision.

The total number of real floating point operations is approximately $\frac{8}{3}{n}^{2}\left(3m-n\right)$ if $m\ge n$ or $\frac{8}{3}{m}^{2}\left(3n-m\right)$ if $m.
To form the unitary matrix $Q$ nag_zgeqlf (f08csc) may be followed by a call to nag_zungql (f08ctc):
```nag_zungql(order,m,m,MIN(m,n),&a,pda,tau,&fail)
```
but note that the second dimension of the array a must be at least m, which may be larger than was required by nag_zgeqlf (f08csc).
When $m\ge n$, it is often only the first $n$ columns of $Q$ that are required, and they may be formed by the call:
```nag_zungql(order,m,n,n,&a,pda,tau,&fail)
```
To apply $Q$ to an arbitrary complex rectangular matrix $C$, nag_zgeqlf (f08csc) may be followed by a call to nag_zunmql (f08cuc). For example,
```nag_zunmql(order,Nag_LeftSide,Nag_ConjTrans,m,p,MIN(m,n),&a,pda,
tau,&c,pdc,&fail)
```
forms $C={Q}^{\mathrm{H}}C$, where $C$ is $m$ by $p$.
The real analogue of this function is nag_dgeqlf (f08cec).

## 9  Example

This example solves the linear least squares problems
 $minx bj - Axj 2 , ​ j=1,2$
for ${x}_{1}$ and ${x}_{2}$, where ${b}_{j}$ is the $j$th column of the matrix $B$,
 $A = 0.96-0.81i -0.03+0.96i -0.91+2.06i -0.05+0.41i -0.98+1.98i -1.20+0.19i -0.66+0.42i -0.81+0.56i 0.62-0.46i 1.01+0.02i 0.63-0.17i -1.11+0.60i -0.37+0.38i 0.19-0.54i -0.98-0.36i 0.22-0.20i 0.83+0.51i 0.20+0.01i -0.17-0.46i 1.47+1.59i 1.08-0.28i 0.20-0.12i -0.07+1.23i 0.26+0.26i$
and
 $B = -2.09+1.93i 3.26-2.70i 3.34-3.53i -6.22+1.16i -4.94-2.04i 7.94-3.13i 0.17+4.23i 1.04-4.26i -5.19+3.63i -2.31-2.12i 0.98+2.53i -1.39-4.05i .$
The solution is obtained by first obtaining a $QL$ factorization of the matrix $A$.

### 9.1  Program Text

Program Text (f08csce.c)

### 9.2  Program Data

Program Data (f08csce.d)

### 9.3  Program Results

Program Results (f08csce.r)