Developer Reference

Contents

?hbgst

Reduces a complex Hermitian positive-definite generalized eigenproblem for banded matrices to the standard form using the factorization performed by
?pbstf
.

Syntax

lapack_int
LAPACKE_chbgst
(
int
matrix_layout
,
char
vect
,
char
uplo
,
lapack_int
n
,
lapack_int
ka
,
lapack_int
kb
,
lapack_complex_float
*
ab
,
lapack_int
ldab
,
const
lapack_complex_float
*
bb
,
lapack_int
ldbb
,
lapack_complex_float
*
x
,
lapack_int
ldx
);
lapack_int
LAPACKE_zhbgst
(
int
matrix_layout
,
char
vect
,
char
uplo
,
lapack_int
n
,
lapack_int
ka
,
lapack_int
kb
,
lapack_complex_double
*
ab
,
lapack_int
ldab
,
const
lapack_complex_double
*
bb
,
lapack_int
ldbb
,
lapack_complex_double
*
x
,
lapack_int
ldx
);
Include Files
  • mkl.h
Description
To reduce the complex Hermitian positive-definite generalized eigenproblem
A
*
z
=
λ
*
B
*
z
to the standard form
C
*
x
=
λ
*
y
, where
A
,
B
and
C
are banded, this routine must be preceded by a call to pbstf/pbstf, which computes the split Cholesky factorization of the positive-definite matrix
B
:
B
=
S
H
*S
. The split Cholesky factorization, compared with the ordinary Cholesky factorization, allows the work to be approximately halved.
This routine overwrites
A
with
C
=
X
H
*A*X
, where
X
=
inv(
S
)
*
Q
, and
Q
is a unitary matrix chosen (implicitly) to preserve the bandwidth of
A
. The routine also has an option to allow the accumulation of
X
, and then, if
z
is an eigenvector of
C
,
X*z
is an eigenvector of the original system.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
vect
Must be
'N'
or
'V'
.
If
vect
=
'N'
, then matrix
X
is not returned;
If
vect
=
'V'
, then matrix
X
is returned.
uplo
Must be
'U'
or
'L'
.
If
uplo
=
'U'
,
ab
stores the upper triangular part of
A
.
If
uplo
=
'L'
,
ab
stores the lower triangular part of
A
.
n
The order of the matrices
A
and
B
(
n
0
).
ka
The number of super- or sub-diagonals in
A
(
ka
0
).
kb
The number of super- or sub-diagonals in
B
(
ka
kb
0
).
ab
,
bb
ab
(size at least max(1,
ldab
*
n
) for column major layout and at least max(1,
ldab
*(
ka
+ 1)) for row major layout)
is an array containing either upper or lower triangular part of the Hermitian matrix
A
(as specified by
uplo
) in band storage format.
bb
(size at least max(1,
ldbb
*
n
) for column major layout and at least max(1,
ldbb
*(
kb
+ 1)) for row major layout)
is an array containing the banded split Cholesky factor of
B
as specified by
uplo
,
n
and
kb
and returned by pbstf/pbstf.
ldab
The leading dimension of the array
ab
; must be at least
ka
+1
for column major layout and max(1,
n
) for row major layout
.
ldbb
The leading dimension of the array
bb
; must be at least
kb
+1
for column major layout and max(1,
n
) for row major layout
.
ldx
The leading dimension of the output array x. Constraints:
if
vect
=
'N'
, then
ldx
1;
if
vect
=
'V'
, then
ldx
max(1,
n
).
Output Parameters
ab
On exit, this array is overwritten by the upper or lower triangle of
C
as specified by
uplo
.
x
Array.
If
vect
=
'V'
, then
x
(size at least max(1,
ldx
*
n
))
contains the
n
-by-
n
matrix
X
=
inv(
S
)
*
Q
.
If
vect
=
'N'
, then
x
is not referenced.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
Forming the reduced matrix
C
involves implicit multiplication by
inv(
B
)
. When the routine 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
B
is ill-conditioned with respect to inversion. The total number of floating-point operations is approximately
20
n
2
*
kb
, when
vect
=
'N'
. Additional
5
n
3
*(
kb/ka
)
operations are required when
vect
=
'V'
. All these estimates assume that both
ka
and
kb
are much less than
n
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.