|
NAG[f08kgc] NAG[nag_dormbr] - Apply orthogonal transformations from reduction to bidiagonal form determined by f08kec (nag_dgebrd)
|
|
Calling Sequence
f08kgc(vect, side, trans, k, a, tau, c, 'm'=m, 'n'=n, 'fail'=fail)
nag_dormbr(. . .)
Parameters
|
vect - String;
|
|
|
Constraint: "Nag_ApplyQ" or "Nag_ApplyP". .
|
|
|
side - String;
|
|
|
Constraint: "Nag_LeftSide" or "Nag_RightSide". .
|
|
|
trans - String;
|
|
|
Constraint: "Nag_NoTrans" or "Nag_Trans". .
|
|
|
k - integer;
|
|
|
On entry: if , the number of columns in the original matrix .
|
|
If , the number of rows in the original matrix .
|
|
Constraint: . .
|
|
|
a - Matrix(1..dim1, 1..dim2, datatype=float[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
On entry: details of the vectors which define the elementary reflectors, as returned by f08kec (nag_dgebrd).
|
|
|
tau - Vector(1..dim, datatype=float[8]);
|
|
|
Note: the dimension, dim, of the array tau must be at least .
|
|
On entry: further details of the elementary reflectors, as returned by f08kec (nag_dgebrd) in its argument tauq if , or in its argument taup if .
|
|
|
c - Matrix(1..dim1, 1..dim2, datatype=float[8], order=order);
|
|
|
Note: this array may be supplied in Fortran_order or C_order , as specified by order. All array parameters must use a consistent order.
|
|
On entry: the matrix .
|
|
|
'm'=m - integer; (optional)
|
|
|
Default value: the first dimension of the array c.
|
|
On entry: , the number of rows of the matrix .
|
|
Constraint: . .
|
|
|
'n'=n - integer; (optional)
|
|
|
Default value: the second dimension of the array c.
|
|
On entry: , the number of columns of the matrix .
|
|
Constraint: . .
|
|
|
'fail'=fail - table; (optional)
|
|
|
The NAG error argument, see the documentation for NagError.
|
|
|
|
Description
|
|
|
Description
|
|
nag_dormbr (f08kgc) is intended to be used after a call to f08kec (nag_dgebrd), which reduces a real rectangular matrix to bidiagonal form by an orthogonal transformation: . f08kec (nag_dgebrd) represents the matrices and as products of elementary reflectors.
This function may be used to form one of the matrix products
overwriting the result on (which may be any real rectangular matrix).
|
|
Error Indicators and Warnings
|
|
"NE_ALLOC_FAIL"
Dynamic memory allocation failed.
"NE_BAD_PARAM"
On entry, argument had an illegal value.
"NE_INT"
On entry, . Constraint: .
On entry, . Constraint: .
On entry, . Constraint: .
"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 consult NAG for assistance.
|
|
Accuracy
|
|
The computed result differs from the exact result by a matrix such that
where is the machine precision.
|
|
Further Comments
|
|
The total number of floating-point operations is approximately
where is the value of the argument k.
The complex analogue of this function is f08kuc (nag_zunmbr).
|
|
|
Examples
|
|
>
|
vect := "Nag_FormQ":
side := "Nag_RightSide":
trans := "Nag_NoTrans":
m := 6:
n := 4:
k := 4:
a := Matrix([[3.617678813825241, 1.258711404710556, -0.4667885339706592, -0.4109505449290541], [0, -2.416055340423327, -1.526154889941117, -0.209455650564123], [0, 0.02040919619839956, 1.921310963709999, 1.18946667701939], [0, -0.3216264186905484, 0.1342281666124217, -1.42650154173086]], datatype=float[8]):
tau := Vector([0, 1.811823817941776, 1.964603347174235, 0], datatype=float[8]):
c := Matrix([[-0.1575595925823212, 0.674381518209104, -0.4571499642152957, 0.4488516451198494], [-0.5334912520769823, -0.3861089893314065, 0.2582527260774866, 0.3898174378676558], [0.6357667770865593, -0.2928230899594126, 0.01653842638455833, 0.1929529167768124], [-0.5334912520769823, -0.1691547055376644, -0.08342735451416798, -0.2349873193632054], [0.04146305067955822, -0.1593027920340203, 0.1474783037934707, 0.7436407646419895], [-0.005528406757274429, -0.5063529996817608, -0.8338680630490599, 0.03351284255316379]], datatype=float[8]):
NAG:-f08kgc(vect, side, trans, k, a, tau, c, 'm' = m, 'n' = n):
|
|
|