|
NAG[f08ktc] NAG[nag_zungbr] - Generate unitary transformation matrices from reduction to bidiagonal form determined by f08ksc (nag_zgebrd)
|
|
Calling Sequence
f08ktc(vect, k, a, tau, 'm'=m, 'n'=n, 'fail'=fail)
nag_zungbr(. . .)
Parameters
|
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=complex[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 f08ksc (nag_zgebrd).
|
|
On exit: the unitary matrix or , or the leading rows or columns thereof, as specified by vect, m and n.
|
|
|
tau - Vector(1..dim, datatype=complex[8]);
|
|
|
Note: the dimension, dim, of the array tau must be at least
|
|
when ;
|
|
when .
|
|
On entry: further details of the elementary reflectors, as returned by f08ksc (nag_zgebrd) in its argument tauq if , or in its argument taup if .
|
|
|
'm'=m - integer; (optional)
|
|
|
Default value: the first dimension of the array a.
|
|
Constraint: . .
|
|
|
'n'=n - integer; (optional)
|
|
|
Default value: the second dimension of the array a.
|
|
.
|
|
|
'fail'=fail - table; (optional)
|
|
|
The NAG error argument, see the documentation for NagError.
|
|
|
|
Description
|
|
|
Purpose
|
|
nag_zungbr (f08ktc) generates one of the complex unitary matrices or which were determined by f08ksc (nag_zgebrd) when reducing a complex matrix to bidiagonal form.
|
|
Description
|
|
nag_zungbr (f08ktc) is intended to be used after a call to f08ksc (nag_zgebrd), which reduces a complex rectangular matrix to real bidiagonal form by a unitary transformation: . f08ksc (nag_zgebrd) represents the matrices and as products of elementary reflectors.
This function may be used to generate or explicitly as square matrices, or in some cases just the leading columns of or the leading rows of .
The various possibilities are specified by the arguments vect, m, n and k. The appropriate values to cover the most likely cases are as follows (assuming that was an by matrix):
nag_zungbr ("Nag_FormQ",...)
|
(note that the array a must have at least columns).
|
nag_zungbr ("Nag_FormQ",...)
nag_zungbr ("Nag_FormP",...)
|
(note that the array a must have at least rows).
|
nag_zungbr ("Nag_FormP",...)
|
|
Error Indicators and Warnings
|
|
"NE_ALLOC_FAIL"
Dynamic memory allocation failed.
"NE_BAD_PARAM"
On entry, argument had an illegal value.
"NE_ENUM_INT_3"
On entry, , , , . Constraint: if and , .
On entry, , , , . Constraint: if and , .
On entry, , , , . Constraint: if and , .
On entry, , , , . Constraint: if and , .
On entry, , , , . Constraint: and
"NE_INT"
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 matrix differs from an exactly unitary matrix by a matrix such that
where is the machine precision. A similar statement holds for the computed matrix .
|
|
Further Comments
|
|
The total number of real floating-point operations for the cases listed in Section [Description] are approximately as follows:
|
To form the whole of :
|
|
if ,
|
|
if ;
|
|
;
|
|
To form the whole of :
|
|
if ,
|
|
if ;
|
|
.
|
The real analogue of this function is f08kfc (nag_dorgbr).
|
|
|
Examples
|
|
>
|
vect := "Nag_FormP":
m := 4:
n := 4:
k := 6:
a := Matrix([[-3.087005021051958 +0*I , 2.112571007455839 +0*I , 0.05433411079440317 +0.4543118496773521*I , 0.375743827925403 +0.1070087304094523*I ], [0 +0*I , 2.066039276679068 +0*I , 1.262810106655225 +0*I , 0.02827717828732734 +0.1650056103049372*I ], [0 +0*I , 0 +0*I , 1.873128891125712 +0*I , -1.612633872800392 +0*I ], [0 +0*I , 0 +0*I , 0 +0*I , 2.002182866206991 +0*I ]], datatype=complex[8]):
tau := Vector([1.231234531617602 -0.540426381454295*I, 1.262279868392228 -0.9286461961380889*I, 1.782899043025449 -0.622148767120724*I, 0 +0*I], datatype=complex[8]):
NAG:-f08ktc(vect, k, a, tau, 'm' = m, 'n' = n):
|

|
|