NAG Library Routine Document
f08ssf
(zhegst)
1
Purpose
f08ssf (zhegst) reduces a complex Hermitian-definite generalized eigenproblem
,
or
to the standard form
, where
is a complex Hermitian matrix and
has been factorized by
f07frf (zpotrf).
2
Specification
Fortran Interface
Integer, Intent (In) | :: |
itype,
n,
lda,
ldb | Integer, Intent (Out) | :: |
info | Complex (Kind=nag_wp), Intent (Inout) | :: |
a(lda,*),
b(ldb,*) | Character (1), Intent (In) | :: |
uplo |
|
C Header Interface
#include nagmk26.h
void |
f08ssf_ (
const Integer *itype,
const char *uplo,
const Integer *n,
Complex a[],
const Integer *lda,
Complex b[],
const Integer *ldb,
Integer *info,
const Charlen length_uplo) |
|
The routine may be called by its
LAPACK
name zhegst.
3
Description
To reduce the complex Hermitian-definite generalized eigenproblem
,
or
to the standard form
,
f08ssf (zhegst) must be preceded by a call to
f07frf (zpotrf) which computes the Cholesky factorization of
;
must be positive definite.
The different problem types are specified by the argument
itype, as indicated in the table below. The table shows how
is computed by the routine, and also how the eigenvectors
of the original problem can be recovered from the eigenvectors of the standard form.
itype |
Problem |
uplo |
|
|
|
|
|
'U'
'L' |
|
|
|
|
|
'U'
'L' |
|
|
|
|
|
'U'
'L' |
|
|
|
4
References
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
5
Arguments
- 1: – IntegerInput
-
On entry: indicates how the standard form is computed.
-
- if , ;
- if , .
- or
-
- if , ;
- if , .
Constraint:
, or .
- 2: – Character(1)Input
-
On entry: indicates whether the upper or lower triangular part of
is stored and how
has been factorized.
- The upper triangular part of is stored and .
- The lower triangular part of is stored and .
Constraint:
or .
- 3: – IntegerInput
-
On entry: , the order of the matrices and .
Constraint:
.
- 4: – Complex (Kind=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
a
must be at least
.
On entry: the
by
Hermitian matrix
.
- If , the upper triangular part of must be stored and the elements of the array below the diagonal are not referenced.
- If , the lower triangular part of must be stored and the elements of the array above the diagonal are not referenced.
On exit: the upper or lower triangle of
a is overwritten by the corresponding upper or lower triangle of
as specified by
itype and
uplo.
- 5: – IntegerInput
-
On entry: the first dimension of the array
a as declared in the (sub)program from which
f08ssf (zhegst) is called.
Constraint:
.
- 6: – Complex (Kind=nag_wp) arrayInput
-
Note: the second dimension of the array
b
must be at least
.
On entry: the Cholesky factor of
as specified by
uplo and returned by
f07frf (zpotrf).
- 7: – IntegerInput
-
On entry: the first dimension of the array
b as declared in the (sub)program from which
f08ssf (zhegst) is called.
Constraint:
.
- 8: – IntegerOutput
On exit:
unless the routine detects an error (see
Section 6).
6
Error Indicators and Warnings
-
If , argument had an illegal value. An explanatory message is output, and execution of the program is terminated.
7
Accuracy
Forming the reduced matrix
is a stable procedure. However it involves implicit multiplication by
(if
) or
(if
or
). When
f08ssf (zhegst) is used as a step in the computation of eigenvalues and eigenvectors of the original problem, there may be a significant loss of accuracy if
is ill-conditioned with respect to inversion.
See the document for
f08snf (zhegv) for further details.
8
Parallelism and Performance
f08ssf (zhegst) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the
X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the
Users' Note for your implementation for any additional implementation-specific information.
The total number of real floating-point operations is approximately .
The real analogue of this routine is
f08sef (dsygst).
10
Example
This example computes all the eigenvalues of
, where
and
Here
is Hermitian positive definite and must first be factorized by
f07frf (zpotrf). The program calls
f08ssf (zhegst) to reduce the problem to the standard form
; then
f08fsf (zhetrd) to reduce
to tridiagonal form, and
f08jff (dsterf) to compute the eigenvalues.
10.1
Program Text
Program Text (f08ssfe.f90)
10.2
Program Data
Program Data (f08ssfe.d)
10.3
Program Results
Program Results (f08ssfe.r)