##### ggrqf

###### Prototype

There is one prototype of `ggrqf` available, please see below.

    ggrqf( MatrixA& a, VectorTAUA& taua, MatrixB& b, VectorTAUB& taub );

###### Description

`ggrqf` (short for $FRIENDLY_NAME) provides a C++ interface to LAPACK routines SGGRQF, DGGRQF, CGGRQF, and ZGGRQF. `ggrqf` computes a generalized RQ factorization of an M-by-N matrix A and a P-by-N matrix B:

A = R*Q, B = Z*T*Q,

where Q is an N-by-N unitary matrix, Z is a P-by-P unitary matrix, and R and T assume one of the forms:

if M <= N, R = ( 0 R12 ) M, or if M > N, R = ( R11 ) M-N, N-M M ( R21 ) N N

where R12 or R21 is upper triangular, and

if P >= N, T = ( T11 ) N , or if P < N, T = ( T11 T12 ) P, ( 0 ) P-N P N-P N

where T11 is upper triangular.

In particular, if B is square and nonsingular, the GRQ factorization of A and B implicitly gives the RQ factorization of A*inv(B):

A*inv(B) = (R*inv(T))*Z'

where inv(B) denotes the inverse of the matrix B, and Z' denotes the conjugate transpose of the matrix Z.

The selection of the LAPACK routine is done during compile-time, and is determined by the type of values contained in type `MatrixA`. The type of values is obtained through the `value_type` meta-function `typename value_type<MatrixA>::type`. The dispatching table below illustrates to which specific routine the code path will be generated.

Table 1.191. Dispatching of ggrqf

Value type of MatrixA | LAPACK routine
--- | ---
`float` | SGGRQF
`double` | DGGRQF
`complex<float>` | CGGRQF
`complex<double>` | ZGGRQF

###### Definition

Defined in header `boost/numeric/bindings/lapack/computational/ggrqf.hpp`.

###### Parameters or Requirements on Types

Parameters

MatrixA

  The definition of term 1

MatrixB

  The definition of term 2

MatrixC

  The definition of term 3.

  Definitions may contain paragraphs.

###### Complexity

###### Example

    #include <boost/numeric/bindings/lapack/computational/ggrqf.hpp>
    using namespace boost::numeric::bindings;

    lapack::ggrqf( x, y, z );

this will output

    [5] 0 1 2 3 4 5

###### Notes

###### See Also

- Originating Fortran source files sggrqf.f, dggrqf.f, cggrqf.f, and zggrqf.f at Netlib.