DTGSY2 - solve the generalized Sylvester equation


SYNOPSIS

       SUBROUTINE DTGSY2( 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

           DOUBLE         PRECISION RDSCAL, RDSUM, SCALE

           INTEGER        IWORK( * )

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


PURPOSE

       DTGSY2 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),

       DLACON.

       DTGSY2  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 DTGSYL. 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.  (DGECON 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION array,  dimension
               (LDC, N)
               On entry, C contains the  right-hand-side  of  the
               first  matrix equation in (1).  On exit, if IJOB =


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

       D       (input) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION
               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) DOUBLE PRECISION
               On entry, the sum of squares of computed contribu­
               tions  to  the  Dif-estimate  under computation by
               DTGSYL,  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 DTGSY2 is called by STGSYL.

       RDSCAL  (input/output) DOUBLE PRECISION
               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


       IWORK   (workspace) INTEGER array, dimension (M+N+2)

       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