nag_dorghr (f08nfc) (PDF version)
f08 Chapter Contents
f08 Chapter Introduction
NAG C Library Manual
NAG Library Function Document
nag_dorghr (f08nfc)
+
−
Contents
1
Purpose
2
Specification
3
Description
4
References
5
Arguments
6
Error Indicators and Warnings
7
Accuracy
8
Further Comments
+
−
9
Example
9.1
Program Text
9.2
Program Data
9.3
Program Results
1 Purpose
nag_dorghr (f08nfc) generates the real orthogonal matrix
Q
which was determined by
nag_dgehrd (f08nec)
when reducing a real general matrix
A
to Hessenberg form.
2 Specification
#include <nag.h>
#include <nagf08.h>
void
nag_dorghr (Nag_OrderType
order
, Integer
n
, Integer
ilo
, Integer
ihi
, double
a
[], Integer
pda
, const double
tau
[], NagError *
fail
)
3 Description
nag_dorghr (f08nfc) is intended to be used following a call to
nag_dgehrd (f08nec)
, which reduces a real general matrix
A
to upper Hessenberg form
H
by an orthogonal similarity transformation:
A
=
Q
H
Q
T
.
nag_dgehrd (f08nec)
represents the matrix
Q
as a product of
i
hi
-
i
lo
elementary reflectors. Here
i
lo
and
i
hi
are values determined by
nag_dgebal (f08nhc)
when balancing the matrix; if the matrix has not been balanced,
i
lo
=
1
and
i
hi
=
n
.
This function may be used to generate
Q
explicitly as a square matrix.
Q
has the structure:
Q
=
I
0
0
0
Q
22
0
0
0
I
where
Q
22
occupies rows and columns
i
lo
to
i
hi
.
4 References
Golub G H and Van Loan C F (1996)
Matrix Computations
(3rd Edition) Johns Hopkins University Press, Baltimore
5 Arguments
1:
order
–
Nag_OrderType
Input
On entry
: the
order
argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by
order
=
Nag_RowMajor
. See
Section 3.2.1.3
in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint
:
order
=
Nag_RowMajor
or Nag_ColMajor.
2:
n
–
Integer
Input
On entry
:
n
, the order of the matrix
Q
.
Constraint
:
n
≥
0
.
3:
ilo
–
Integer
Input
4:
ihi
–
Integer
Input
On entry
: these
must
be the same arguments
ilo
and
ihi
, respectively, as supplied to
nag_dgehrd (f08nec)
.
Constraints
:
if
n
>
0
,
1
≤
ilo
≤
ihi
≤
n
;
if
n
=
0
,
ilo
=
1
and
ihi
=
0
.
5:
a
[
dim
]
–
double
Input/Output
Note:
the dimension,
dim
, of the array
a
must be at least
max
1
,
pda
×
n
.
On entry
: details of the vectors which define the elementary reflectors, as returned by
nag_dgehrd (f08nec)
.
On exit
: the
n
by
n
orthogonal matrix
Q
.
If
order
=
Nag_ColMajor
, the
i
,
j
th element of the matrix is stored in
a
[
j
-
1
×
pda
+
i
-
1
]
.
If
order
=
Nag_RowMajor
, the
i
,
j
th element of the matrix is stored in
a
[
i
-
1
×
pda
+
j
-
1
]
.
6:
pda
–
Integer
Input
On entry
: the stride separating row or column elements (depending on the value of
order
) in the array
a
.
Constraint
:
pda
≥
max
1
,
n
.
7:
tau
[
dim
]
–
const double
Input
Note:
the dimension,
dim
, of the array
tau
must be at least
max
1
,
n
-
1
.
On entry
: further details of the elementary reflectors, as returned by
nag_dgehrd (f08nec)
.
8:
fail
–
NagError *
Input/Output
The NAG error argument (see
Section 3.6
in the Essential Introduction).
6 Error Indicators and Warnings
NE_ALLOC_FAIL
Dynamic memory allocation failed.
NE_BAD_PARAM
On entry, argument
value
had an illegal value.
NE_INT
On entry,
n
=
value
.
Constraint:
n
≥
0
.
On entry,
pda
=
value
.
Constraint:
pda
>
0
.
NE_INT_2
On entry,
pda
=
value
and
n
=
value
.
Constraint:
pda
≥
max
1
,
n
.
NE_INT_3
On entry,
n
=
value
,
ilo
=
value
and
ihi
=
value
.
Constraint: if
n
>
0
,
1
≤
ilo
≤
ihi
≤
n
;
if
n
=
0
,
ilo
=
1
and
ihi
=
0
.
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 contact
NAG
for assistance.
7 Accuracy
The computed matrix
Q
differs from an exactly orthogonal matrix by a matrix
E
such that
E
2
=
O
ε
,
where
ε
is the
machine precision
.
8 Further Comments
The total number of floating point operations is approximately
4
3
q
3
, where
q
=
i
hi
-
i
lo
.
The complex analogue of this function is
nag_zunghr (f08ntc)
.
9 Example
This example computes the Schur factorization of the matrix
A
, where
A
=
0.35
0.45
-
0.14
-
0.17
0.09
0.07
-
0.54
0.35
-
0.44
-
0.33
-
0.03
0.17
0.25
-
0.32
-
0.13
0.11
.
Here
A
is general and must first be reduced to Hessenberg form by
nag_dgehrd (f08nec)
. The program then calls nag_dorghr (f08nfc) to form
Q
, and passes this matrix to
nag_dhseqr (f08pec)
which computes the Schur factorization of
A
.
9.1 Program Text
Program Text (f08nfce.c)
9.2 Program Data
Program Data (f08nfce.d)
9.3 Program Results
Program Results (f08nfce.r)
nag_dorghr (f08nfc) (PDF version)
f08 Chapter Contents
f08 Chapter Introduction
NAG C Library Manual
© The Numerical Algorithms Group Ltd, Oxford, UK. 2012