Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

p?syngst

Reduces a complex Hermitian-definite generalized eigenproblem to standard form.

Syntax

call pssyngst
(
ibtype
,
uplo
,
n
,
a
,
ia
,
ja
,
desca
,
b
,
ib
,
jb
,
descb
,
scale
,
work
,
lwork
,
info
)
call pdsyngst
(
ibtype
,
uplo
,
n
,
a
,
ia
,
ja
,
desca
,
b
,
ib
,
jb
,
descb
,
scale
,
work
,
lwork
,
info
)
Description
p?syngst
reduces a complex Hermitian-definite generalized eigenproblem to standard form.
p?syngst
performs the same function as
p?hegst
, but is based on rank 2K updates, which are faster and more scalable than triangular solves (the basis of
p?syngst
).
p?syngst
calls
p?hegst
when
uplo
='U', hence
p?hengst
provides improved performance only when
uplo
='L',
ibtype
=1.
p?syngst
also calls
p?hegst
when insufficient workspace is provided, hence
p?syngst
provides improved performance only when
lwork
>= 2 * NP0 * NB + NQ0 * NB + NB * NB
In the following sub(
A
) denotes
A
(
ia
:
ia
+
n
-1,
ja
:
ja
+
n
-1 ) and sub(
B
) denotes
B
(
ib
:
ib
+
n
-1,
jb
:
jb
+
n
-1 ).
If
ibtype
= 1, the problem is sub(
A
)*x = lambda*sub(
B
)*x, and sub(
A
) is overwritten by inv(
U
H
)*sub(
A
)*inv(
U
) or inv(
L
)*sub(
A
)*inv(
L
H
)
If
ibtype
= 2 or 3, the problem is sub(
A
)*sub(
B
)*x = lambda*x or sub(
B
)*sub(
A
)*x = lambda*x, and sub(
A
) is overwritten by
U
*sub(
A
)*
U
H
or
L
H
*sub(
A
)*
L
.
sub(
B
) must have been previously factorized as
U
H
*
U
or
L
*
L
H
by
p?potrf
.
Input Parameters
ibtype
(global)
INTEGER.
= 1: compute inv(
U
H
)*sub(
A
)*inv(
U
) or inv(
L
)*sub(
A
)*inv(
L
H
);
= 2 or 3: compute
U
*sub(
A
)*
U
H
or
L
H
*sub(
A
)*
L
.
uplo
(global)
CHARACTER.
= 'U': Upper triangle of sub(
A
) is stored and sub(
B
) is factored as
U
H
*
U
;
= 'L': Lower triangle of sub(
A
) is stored and sub(
B
) is factored as