?tgsyl
?tgsyl
Solves the generalized Sylvester equation.
Syntax
lapack_int LAPACKE_stgsyl
(
int
matrix_layout
,
char
trans
,
lapack_int
ijob
,
lapack_int
m
,
lapack_int
n
,
const float*
a
,
lapack_int
lda
,
const float*
b
,
lapack_int
ldb
,
float*
c
,
lapack_int
ldc
,
const float*
d
,
lapack_int
ldd
,
const float*
e
,
lapack_int
lde
,
float*
f
,
lapack_int
ldf
,
float*
scale
,
float*
dif
);
lapack_int LAPACKE_dtgsyl
(
int
matrix_layout
,
char
trans
,
lapack_int
ijob
,
lapack_int
m
,
lapack_int
n
,
const double*
a
,
lapack_int
lda
,
const double*
b
,
lapack_int
ldb
,
double*
c
,
lapack_int
ldc
,
const double*
d
,
lapack_int
ldd
,
const double*
e
,
lapack_int
lde
,
double*
f
,
lapack_int
ldf
,
double*
scale
,
double*
dif
);
lapack_int LAPACKE_ctgsyl
(
int
matrix_layout
,
char
trans
,
lapack_int
ijob
,
lapack_int
m
,
lapack_int
n
,
const lapack_complex_float*
a
,
lapack_int
lda
,
const lapack_complex_float*
b
,
lapack_int
ldb
,
lapack_complex_float*
c
,
lapack_int
ldc
,
const lapack_complex_float*
d
,
lapack_int
ldd
,
const lapack_complex_float*
e
,
lapack_int
lde
,
lapack_complex_float*
f
,
lapack_int
ldf
,
float*
scale
,
float*
dif
);
lapack_int LAPACKE_ztgsyl
(
int
matrix_layout
,
char
trans
,
lapack_int
ijob
,
lapack_int
m
,
lapack_int
n
,
const lapack_complex_double*
a
,
lapack_int
lda
,
const lapack_complex_double*
b
,
lapack_int
ldb
,
lapack_complex_double*
c
,
lapack_int
ldc
,
const lapack_complex_double*
d
,
lapack_int
ldd
,
const lapack_complex_double*
e
,
lapack_int
lde
,
lapack_complex_double*
f
,
lapack_int
ldf
,
double*
scale
,
double*
dif
);
Include Files
- mkl.h
Description
The routine solves the generalized Sylvester equation:
A
*R
-L
*B
= scale
*C
D
*R
-L
*E
= scale
*F
where
R
and L
are unknown m
-by-n
matrices, (A
, D
), (B
, E
) and (C
, F
) are given matrix pairs of size m
-by-m
, n
-by-n
and m
-by-n
, respectively, with real/complex entries. (A
, D
) and (B
, E
) must be in generalized real-Schur/Schur canonical form, that is, A
, B
are upper quasi-triangular/triangular and D
, E
are upper triangular.The solution (
R
, L
) overwrites (C
, F
). The factor scale
, 0
, is an output scaling factor chosen to avoid overflow.≤
scale
≤
1In matrix notation the above equation is equivalent to the following: solve , where
Z
*x
= scale
*b
Z
is defined as
Here is the identity matrix of size is the Kronecker product between the matrices
I
k
k
and X
T
is the transpose/conjugate-transpose of X
. kron
(X
, Y
)X
and Y
. If (for real flavors), or (for complex flavors), the routine , which is equivalent to solve for
trans
= 'T'
trans
= 'C'
?tgsyl
solves the transposed/conjugate-transposed system Z
T
*y
= scale
*b
R
and L
in A
T
*R
+D
T
*L
= scale
*C
R
*B
T
+L
*E
T
= scale
*(-F
)This case ( for for
trans
= 'T'
stgsyl
/dtgsyl
or trans
= 'C'
ctgsyl
/ztgsyl
) is used to compute an one-norm-based estimate of Dif[(
, the separation between the matrix pairs (A
, D
), (B
, E
)]A
,D
) and (B
,E
). If ,
ijob
≥ 1?tgsyl
computes a Frobenius norm-based estimate of Dif[(
. That is, the reciprocal of a lower bound on the reciprocal of the smallest singular value of A
, D
), (B
,E
)]Z
. This is a level 3 BLAS algorithm.Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- trans
- Must be'N','T', or'C'.If, solve the generalized Sylvester equation.trans='N'If, solve the 'transposed' system (for real flavors only).trans='T'If, solve the ' conjugate transposed' system (for complex flavors only).trans='C'
- ijob
- Specifies what kind of functionality to be performed:If, solve the generalized Sylvester equation only;ijob=0If, perform the functionality ofijob=1andijob=0;ijob=3If, perform the functionality ofijob=2andijob=0;ijob=4If, only an estimate of Dif[(ijob=3A,D), (B,E)] is computed (look ahead strategy is used);If, only an estimate of Dif[(ijob=4A,D), (B,E)] is computed (?gecon on sub-systems is used). Ifortrans='T''C',ijobis not referenced.
- m
- The order of the matricesAandD, and the row dimension of the matricesC,F,RandL.
- n
- The order of the matricesBandE, and the column dimension of the matricesC,F,RandL.
- a,b,c,d,e,f
- Arrays:a(size max(1,contains the upper quasi-triangular (for real flavors) or upper triangular (for complex flavors) matrixlda*m))A.b(size max(1,contains the upper quasi-triangular (for real flavors) or upper triangular (for complex flavors) matrixldb*n))B.c(size max(1,contains the right-hand-side of the first matrix equation in the generalized Sylvester equation (as defined byldc*n) for column major layout and max(1,ldc*m) for row major layout)trans)d(size max(1,contains the upper triangular matrixldd*m))D.e(size max(1,contains the upper triangular matrixlde*n))E.f(size max(1,contains the right-hand-side of the second matrix equation in the generalized Sylvester equation (as defined byldf*n) for column major layout and max(1,ldf*m) for row major layout)trans)
- lda
- The leading dimension ofa; at least max(1,m).
- ldb
- The leading dimension ofb; at least max(1,n).
- ldc
- The leading dimension ofc; at least max(1,m)for column major layout and at least max(1,.n) for row major layout
- ldd
- The leading dimension ofd; at least max(1,m).
- lde
- The leading dimension ofe; at least max(1,n).
- ldf
- The leading dimension off; at least max(1,m)for column major layout and at least max(1,.n) for row major layout
Output Parameters
- c
- If, 1, or 2, overwritten by the solutionijob=0R.Ifor 4 andijob=3trans='N',choldsR, the solution achieved during the computation of theDif-estimate.
- f
- If, 1, or 2, overwritten by the solutionijob=0L.Ifor 4 andijob=3,trans='N'fholdsL, the solution achieved during the computation of theDif-estimate.
- dif
- On exit,difis the reciprocal of a lower bound of the reciprocal of the Dif-function, that is,difis an upper bound ofDif[(, whereA,D), (B,E)] = sigma_min(Z)Zas defined in the description.If, orijob= 0(for real flavors), ortrans='T'(for complex flavors),trans='C'difis not touched.
- scale
- On exit,scaleis the scaling factor in the generalized Sylvester equation.If0 <,scale< 1candfhold the solutionsRandL, respectively, to a slightly perturbed system but the input matricesA,B,DandEhave not been changed.If,scale= 0candfhold the solutionsRandL, respectively, to the homogeneous system withC=. Normally,F= 0.scale= 1
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , the
info
= -i
i
-th parameter had an illegal value.If , (
info
> 0A
, D
) and (B
, E
) have common or close eigenvalues.