[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section ggqrf]

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


[heading Description]

`ggqrf` (short for $FRIENDLY_NAME) provides a C++
interface to LAPACK routines SGGQRF, DGGQRF, CGGQRF, and ZGGQRF. 
`ggqrf` computes a generalized QR factorization of an N-by-M matrix A
and an N-by-P matrix B:

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

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 N >= M, R = ( R11 ) M , or if N < M, R = ( R11 R12 ) N,
( 0 ) N-M    N M-N
M

where R11 is upper triangular, and

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

where T12 or T21 is upper triangular.

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

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

where inv(B) denotes the inverse of the matrix B, and Z' denotes the
conjugate transpose of 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 ggqrf
[  [ Value type of MatrixA ] [LAPACK routine] ]
[  [`float`][SGGQRF] ]
[  [`double`][DGGQRF] ]
[  [`complex<float>`][CGGQRF] ]
[  [`complex<double>`][ZGGQRF] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/computational/ggqrf.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/ggqrf.hpp>
using namespace boost::numeric::bindings;

lapack::ggqrf( 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/sggqrf.f sggqrf.f], [@http://www.netlib.org/lapack/double/dggqrf.f dggqrf.f], [@http://www.netlib.org/lapack/complex/cggqrf.f cggqrf.f], and [@http://www.netlib.org/lapack/complex16/zggqrf.f zggqrf.f] at Netlib.

[endsect]
