There is one prototype of unmbr
available, please see below.
unmbr( const char vect, const Side side, const int_t k, const MatrixA& a, const VectorTAU& tau, MatrixC& c );
unmbr
(short for $FRIENDLY_NAME)
provides a C++ interface to LAPACK routines SORMBR, DORMBR, CUNMBR, and
ZUNMBR. If VECT = 'Q', unmbr
overwrites the general complex M-by-N matrix C with SIDE = 'L' SIDE =
'R' TRANS = 'N': Q * C C * Q TRANS = 'C': Q*H *
C C * Q*H
If VECT = 'P', unmbr
overwrites the general complex M-by-N matrix C with SIDE = 'L' SIDE =
'R' TRANS = 'N': P * C C * P TRANS = 'C': P*H *
C C * P*H
Here Q and P*H are the unitary matrices determined by ZGEBRD when reducing a complex matrix A to bidiagonal form: A = Q * B * PH. Q and P*H are defined as products of elementary reflectors H(i) and G(i) respectively.
Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the order of the unitary matrix Q or P**H that is applied.
If VECT = 'Q', A is assumed to have been an NQ-by-K matrix: if nq >= k, Q = H(1) H(2) . . . H(k); if nq < k, Q = H(1) H(2) . . . H(nq-1).
If VECT = 'P', A is assumed to have been a K-by-NQ matrix: if k < nq, P = G(1) G(2) . . . G(k); if k >= nq, P = G(1) G(2) . . . G(nq-1).
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.223. Dispatching of unmbr
Value type of MatrixA |
LAPACK routine |
---|---|
|
SORMBR |
|
DORMBR |
|
CUNMBR |
|
ZUNMBR |
Defined in header boost/numeric/bindings/lapack/computational/unmbr.hpp
.
Parameters
The definition of term 1
The definition of term 2
The definition of term 3.
Definitions may contain paragraphs.
#include <boost/numeric/bindings/lapack/computational/unmbr.hpp> using namespace boost::numeric::bindings; lapack::unmbr( x, y, z );
this will output
[5] 0 1 2 3 4 5