STGSY2 - solve the generalized Sylvester equation


SYNOPSIS

       SUBROUTINE STGSY2( TRANS,  IJOB,  M, N, A, LDA, B, LDB, C,
                          LDC, D, LDD, E,  LDE,  F,  LDF,  SCALE,
                          RDSUM, RDSCAL, IWORK, PQ, INFO )

           CHARACTER      TRANS

           INTEGER        IJOB,  INFO,  LDA,  LDB, LDC, LDD, LDE,
                          LDF, M, N, PQ

           REAL           RDSCAL, RDSUM, SCALE

           INTEGER        IWORK( * )

           REAL           A( LDA, * ), B( LDB, * ), C( LDC, *  ),
                          D( LDD, * ), E( LDE, * ), F( LDF, * )


PURPOSE

       STGSY2 solves the generalized Sylvester equation:
                   A * R - L * B = scale * C                (1)
                   D * R - L * E = scale * F,

       using Level 1 and 2 BLAS. 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
       entries. (A, D) and (B, E) must be  in  generalized  Schur
       canonical  form,  i.e. A, B are upper quasi triangular and
       D, E are upper triangular. The solution (R, L)  overwrites
       (C, F). 0 <= SCALE <= 1 is an output scaling factor chosen
       to avoid overflow.

       In matrix notation solving  equation  (1)  corresponds  to
       solve Z*x = scale*b, where Z is defined as

              Z = [ kron(In, A)  -kron(B', Im) ]             (2)
                  [ kron(In, D)  -kron(E', Im) ],

       Ik  is  the identity matrix of size k and X' is the trans­
       pose of X.  kron(X, Y) is the  Kronecker  product  between
       the  matrices  X and Y.  In the process of solving (1), we
       solve a number of such systems where Dim(In), Dim(In) =  1
       or 2.

       If TRANS = 'T', solve the transposed system Z'*y = scale*b
       for y, which is equivalent to solve for R and L in

                   A' * R  + D' * L   = scale *  C           (3)
                   R  * B' + L  * E'  = scale * -F

       This case is used to compute an estimate  of  Dif[(A,  D),
       (B,  E)]  =  sigma_min(Z)  using reverse communicaton with


       STGSY2 also (IJOB >= 1) contributes to the computation  in
       STGSYL  of  an  upper  bound  on the separation between to
       matrix pairs. Then the input (A, D), (B, E)  are  sub-pen­
       cils of the matrix pair in STGSYL. See STGSYL for details.


ARGUMENTS

       TRANS   (input) CHARACTER
               = 'N', solve the  generalized  Sylvester  equation
               (1).  = 'T': solve the 'transposed' system (3).

       IJOB    (input) INTEGER
               Specifies  what  kind  of functionality to be per­
               formed.  = 0: solve (1) only.
               = 1: A  contribution  from  this  subsystem  to  a
               Frobenius  norm-based  estimate  of the separation
               between two matrix pairs is computed. (look  ahead
               strategy  is used).  = 2: A contribution from this
               subsystem to a Frobenius  norm-based  estimate  of
               the  separation  between  two matrix pairs is com­
               puted. (SGECON on sub-systems is used.)  Not  ref­
               erenced if TRANS = 'T'.

       M       (input) INTEGER
               On  entry,  M  specifies the order of A and D, and
               the row dimension of C, F, R and L.

       N       (input) INTEGER
               On entry, N specifies the order of B  and  E,  and
               the column dimension of C, F, R and L.

       A       (input) REAL array, dimension (LDA, M)
               On  entry,  A  contains  an upper quasi triangular
               matrix.

       LDA     (input) INTEGER
               The leading dimension of  the  matrix  A.  LDA  >=
               max(1, M).

       B       (input) REAL array, dimension (LDB, N)
               On  entry,  B  contains  an upper quasi triangular
               matrix.

       LDB     (input) INTEGER
               The leading dimension of  the  matrix  B.  LDB  >=
               max(1, N).

       C       (input/ output) REAL array, dimension (LDC, N)
               On  entry,  C  contains the right-hand-side of the
               first matrix equation in (1).  On exit, if IJOB  =
               0, C has been overwritten by the solution R.

               The  leading  dimension  of  the  matrix C. LDC >=
               max(1, M).

       D       (input) REAL array, dimension (LDD, M)
               On entry, D contains an upper triangular matrix.

       LDD     (input) INTEGER
               The leading dimension of  the  matrix  D.  LDD  >=
               max(1, M).

       E       (input) REAL array, dimension (LDE, N)
               On entry, E contains an upper triangular matrix.

       LDE     (input) INTEGER
               The  leading  dimension  of  the  matrix E. LDE >=
               max(1, N).

       F       (input/ output) REAL array, dimension (LDF, N)
               On entry, F contains the  right-hand-side  of  the
               second matrix equation in (1).  On exit, if IJOB =
               0, F has been overwritten by the solution L.

       LDF     (input) INTEGER
               The leading dimension of  the  matrix  F.  LDF  >=
               max(1, M).

       SCALE   (output) REAL
               On  exit,  0  <= SCALE <= 1. If 0 < SCALE < 1, the
               solutions R and L (C and F on entry) will hold the
               solutions  to  a slightly perturbed system but the
               input matrices  A,  B,  D  and  E  have  not  been
               changed. If SCALE = 0, R and L will hold the solu­
               tions to the homogeneous system with C =  F  =  0.
               Normally, SCALE = 1.

       RDSUM   (input/output) REAL
               On entry, the sum of squares of computed contribu­
               tions to the  Dif-estimate  under  computation  by
               STGSYL,  where  the  scaling  factor  RDSCAL  (see
               below) has been factored out.  On exit, the corre­
               sponding sum of squares updated with the contribu­
               tions from the current sub-system.  If TRANS = 'T'
               RDSUM  is  not  touched.   NOTE:  RDSUM only makes
               sense when STGSY2 is called by STGSYL.

       RDSCAL  (input/output) REAL
               On entry, scaling factor used to prevent  overflow
               in  RDSUM.   On exit, RDSCAL is updated w.r.t. the
               current contributions in RDSUM.  If TRANS  =  'T',
               RDSCAL  is  not  touched.  NOTE: RDSCAL only makes
               sense when STGSY2 is called by STGSYL.


       PQ      (output) INTEGER
               On exit, the number of subsystems (of size 2-by-2,
               4-by-4 and 8-by-8) solved by this routine.

       INFO    (output) INTEGER
               On exit, if INFO is set to =0: Successful exit
               <0: If INFO = -i, the i-th argument had an illegal
               value.
               >0: The matrix pairs (A, D) and (B, E) have common
               or very close eigenvalues.


FURTHER DETAILS

       Based on contributions by
          Bo  Kagstrom and Peter Poromaa, Department of Computing
       Science,
          Umea University, S-901 87 Umea, Sweden.


Man(1) output converted with man2html