Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

?latm5

Generates matrices involved in the Generalized Sylvester equation.

Syntax

void slatm5
(
*prtype
,
lapack_int
*m
,
lapack_int
*n
,
float
*a
,
lapack_int
*lda
,
float
*b
,
lapack_int
*ldb
,
float
*c
,
lapack_int
*ldc
,
float
*d
,
lapack_int
*ldd
,
float
*e
,
lapack_int
*lde
,
float
*f
,
lapack_int
*ldf
,
float
*r
,
lapack_int
*ldr
,
float
*l
,
lapack_int
*ldl
,
float
*alpha
,
lapack_int
*qblcka
,
lapack_int
*qblckb
);
void dlatm5
(
*prtype
,
lapack_int
*m
,
lapack_int
*n
,
double
*a
,
lapack_int
*lda
,
double
*b
,
lapack_int
*ldb
,
double
*c
,
lapack_int
*ldc
,
double
*d
,
lapack_int
*ldd
,
double
*e
,
lapack_int
*lde
,
double
*f
,
lapack_int
*ldf
,
double
*r
,
lapack_int
*ldr
,
double
*l
,
lapack_int
*ldl
,
double
*alpha
,
lapack_int
*qblcka
,
lapack_int
*qblckb
);
void clatm5
(
*prtype
,
lapack_int
*m
,
lapack_int
*n
,
lapack_complex_float
*a
,
lapack_int
*lda
,
lapack_complex_float
*b
,
lapack_int
*ldb
,
lapack_complex_float
*c
,
lapack_int
*ldc
,
lapack_complex_float
*d
,
lapack_int
*ldd
,
lapack_complex_float
*e
,
lapack_int
*lde
,
lapack_complex_float
*f
,
lapack_int
*ldf
,
lapack_complex_float
*r
,
lapack_int
*ldr
,
lapack_complex_float
*l
,
lapack_int
*ldl
,
float
*alpha
,
lapack_int
*qblcka
,
lapack_int
*qblckb
);
void zlatm5
(
*prtype
,
lapack_int
*m
,
lapack_int
*n
,
lapack_complex_double
*a
,
lapack_int
*lda
,
lapack_complex_double
*b
,
lapack_int
*ldb
,
lapack_complex_double
*c
,
lapack_int
*ldc
,
lapack_complex_double
*d
,
lapack_int
*ldd
,
lapack_complex_double
*e
,
lapack_int
*lde
,
lapack_complex_double
*f
,
lapack_int
*ldf
,
lapack_complex_double
*r
,
lapack_int
*ldr
,
lapack_complex_double
*l
,
lapack_int
*ldl
,
float
*alpha
,
lapack_int
*qblcka
,
lapack_int
*qblckb
);
Include Files
  • mkl.h
Description
The
?latm5
routine generates matrices involved in the Generalized Sylvester equation:
A
*
R
-
L
*
B
=
C
D
*
R
-
L
*
E
=
F
They also satisfy the diagonalization condition:
Input Parameters
prtype
Specifies the type of matrices to generate.
  • If
    prtype
    = 1
    ,
    A
    and
    B
    are Jordan blocks,
    D
    and
    E
    are identity matrices.
    A
    :
    If
    (
    i
    ==
    j
    )
    then
    A
    i
    ,
    j
    = 1.0
    .
    If
    (
    j
    ==
    i
    + 1)
    then
    A
    i
    ,
    j
    = -1.0
    .
    Otherwise
    A
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    m
    B
    :
    If
    (
    i
    ==
    j
    )
    then
    B
    i
    ,
    j
    = 1.0 -
    alpha
    .
    If
    (
    j
    ==
    i
    + 1)
    then
    B
    i
    ,
    j
    = 1.0
    .
    Otherwise
    B
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    n
    .
    D
    :
    If
    (
    i
    ==
    j
    )
    then
    D
    i
    ,
    j
    = 1.0
    .
    Otherwise
    D
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    m
    .
    E:
    If
    (
    i
    ==
    j
    )
    then
    E
    i
    ,
    j
    = 1.0
    Otherwise
    E
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    n
    .
    L
    =
    R
    are chosen from [-10...10], which specifies the right hand sides (
    C
    ,
    F
    ).
  • If
    prtype
    = 2 or 3
    : Triangular and/or quasi- triangular.
    A
    :
    If
    (
    i
    j
    )
    then
    A
    i
    ,
    j
    = [-1...1]
    .
    Otherwise
    A
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...M
    .
    If (
    prtype
    = 3) then
    A
    k
    + 1,
    k
    + 1
    =
    A
    k
    ,
    k
    ;
    A
    k
    + 1,
    k
    = [-1...1]
    ;
    sign(
    A
    k
    ,
    k
    + 1
    ) = -(sign(
    A
    k
    + 1,
    k
    )
    .
    k
    = 1,
    m
    - 1,
    qblcka
    B
    :
    If
    (
    i
    j
    )
    then
    B
    i
    ,
    j
    = [-1...1]
    .
    Otherwise
    B
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    n
    .
    If (
    prtype
    = 3) then
    B
    k
    + 1,
    k
    + 1
    =
    B
    k
    ,
    k
    B
    k
    + 1,
    k
    = [-1...1]
    sign(
    B
    k
    ,
    k
    + 1
    )
    = -(sign(
    B
    k
    + 1,
    k
    )
    k
    = 1,
    n
    - 1,
    qblckb
    .
    D
    :
    If
    (
    i
    j
    )
    then
    D
    i
    ,
    j
    = [-1...1]
    .
    Otherwise
    D
    i
    ,
    j
    = 0.0,
    i
    ,
    j
    = 1...
    m
    .
    E
    :
    If
    (i <= j)
    then
    E
    i
    ,
    j
    = [-1...1]
    .
    Otherwise
    E
    i
    ,
    j
    = 0.0, i, j = 1...N
    .
    L
    ,
    R
    are chosen from [-10...10], which specifies the right hand sides (
    C
    ,
    F
    ).
  • If
    prtype
    = 4 Full
       
    A
    i
    ,
    j
    = [-10...10]
       
    D
    i
    ,
    j
    = [-1...1]
    i
    ,
    j
    = 1...
    m
       
    B
    i
    ,
    j
    = [-10...10]
       
    E
    i
    ,
    j
    = [-1...1]
    i
    ,
    j
    = 1...
    n
       
    R
    i
    ,
    j
    = [-10...10]
       
    L
    i
    ,
    j
    = [-1...1]
    i
    = 1..
    m
    ,
    j
    = 1...
    n
    L
    and
    R
    specifies the right hand sides (
    C
    ,
    F
    ).
  • If
    prtype
    = 5 special case common and/or close eigs.
m
Specifies the order of
A
and
D
and the number of rows in
C
,
F
,
R
and
L
.
n
Specifies the order of
B
and
E
and the number of columns in
C
,
F
,
R
and
L
.
lda
The leading dimension of
a
.
ldb
The leading dimension of
b
.
ldc
The leading dimension of
c
.
ldd
The leading dimension of
d
.
lde
The leading dimension of
e
.
ldf
The leading dimension of
f
.
ldr
The leading dimension of
r
.
ldl
The leading dimension of
l
.
alpha
Parameter used in generating
prtype
= 1 and 5 matrices.
qblcka
When
prtype
= 3, specifies the distance between 2-by-2 blocks on the diagonal in
A
. Otherwise,
qblcka
is not referenced.
qblcka
> 1.
qblckb
When
prtype
= 3, specifies the distance between 2-by-2 blocks on the diagonal in
B
. Otherwise,
qblckb
is not referenced.
qblckb
> 1.
Output Parameters
a
Array, size
lda
*
m
. On exit
a
contains the
m
-by-
m
array
A
initialized according to
prtype
.
b
Array, size
ldb
*
n
. On exit
b
contains the
n
-by-
n
array
B
initialized according to
prtype
.
c
Array, size
ldc
*
n
. On exit
c
contains the
m
-by-
n
array
C
initialized according to
prtype
.
d
Array, size
ldd
*
m
. On exit
d
contains the
m
-by-
m
array
D
initialized according to
prtype
.
e
Array, size
lde
*
n
. On exit
e
contains the
n
-by-
n
array
E
initialized according to
prtype
.
f
Array, size
ldf
*
n
. On exit
f
contains the
m
-by-
n
array
F
initialized according to
prtype
.
r
Array, size
ldr
*
n
. On exit
R
contains the
m
-by-
n
array
R
initialized according to
prtype
.
l
Array, size
ldl
*
n
. On exit
l
contains the
m
-by-
n
array
L
initialized according to
prtype
.