[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section ggrqf]

[heading Prototype]
There is one prototype of `ggrqf` available, please see below.
``
ggrqf( MatrixA& a, VectorTAUA& taua, MatrixB& b, VectorTAUB& taub );
``


[heading 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 Dispatching of ggrqf
[  [ Value type of MatrixA ] [LAPACK routine] ]
[  [`float`][SGGRQF] ]
[  [`double`][DGGRQF] ]
[  [`complex<float>`][CGGRQF] ]
[  [`complex<double>`][ZGGRQF] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/computational/ggrqf.hpp].


[heading Parameters or Requirements on Types]

[variablelist Parameters
    [[MatrixA] [The definition of term 1]]
    [[MatrixB] [The definition of term 2]]
    [[MatrixC] [
    The definition of term 3.

    Definitions may contain paragraphs.
    ]]
]


[heading Complexity]


[heading 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
``



[heading Notes]


[heading See Also]

* Originating Fortran source files [@http://www.netlib.org/lapack/single/sggrqf.f sggrqf.f], [@http://www.netlib.org/lapack/double/dggrqf.f dggrqf.f], [@http://www.netlib.org/lapack/complex/cggrqf.f cggrqf.f], and [@http://www.netlib.org/lapack/complex16/zggrqf.f zggrqf.f] at Netlib.

[endsect]
