Purpose
  To solve for X either the reduced generalized continuous-time
  Lyapunov equation
      T            T
     A  * X * E + E  * X * A  =  SCALE * Y                       (1)
  or
              T            T
     A * X * E  + E * X * A   =  SCALE * Y                       (2)
  where the right hand side Y is symmetric. A, E, Y, and the
  solution X are N-by-N matrices. The pencil A - lambda * E must be
  in generalized Schur form (A upper quasitriangular, E upper
  triangular). SCALE is an output scale factor, set to avoid
  overflow in X.
Specification
      SUBROUTINE SG03AY( TRANS, N, A, LDA, E, LDE, X, LDX, SCALE, INFO )
C     .. Scalar Arguments ..
      CHARACTER         TRANS
      DOUBLE PRECISION  SCALE
      INTEGER           INFO, LDA, LDE, LDX, N
C     .. Array Arguments ..
      DOUBLE PRECISION  A(LDA,*), E(LDE,*), X(LDX,*)
Arguments
Mode Parameters
  TRANS   CHARACTER*1
          Specifies whether the transposed equation is to be solved
          or not:
          = 'N':  Solve equation (1);
          = 'T':  Solve equation (2).
Input/Output Parameters
  N       (input) INTEGER
          The order of the matrix A.  N >= 0.
  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
          The leading N-by-N upper Hessenberg part of this array
          must contain the quasitriangular matrix A.
  LDA     INTEGER
          The leading dimension of the array A.  LDA >= MAX(1,N).
  E       (input) DOUBLE PRECISION array, dimension (LDE,N)
          The leading N-by-N upper triangular part of this array
          must contain the matrix E.
  LDE     INTEGER
          The leading dimension of the array E.  LDE >= MAX(1,N).
  X       (input/output) DOUBLE PRECISION array, dimension (LDX,N)
          On entry, the leading N-by-N part of this array must
          contain the right hand side matrix Y of the equation. Only
          the upper triangular part of this matrix need be given.
          On exit, the leading N-by-N part of this array contains
          the solution matrix X of the equation.
  LDX     INTEGER
          The leading dimension of the array X.  LDX >= MAX(1,N).
  SCALE   (output) DOUBLE PRECISION
          The scale factor set to avoid overflow in X.
          (0 < SCALE <= 1)
Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value;
          = 1:  equation is (almost) singular to working precision;
                perturbed values were used to solve the equation
                (but the matrices A and E are unchanged).
Method
The solution X of (1) or (2) is computed via block back substitution or block forward substitution, respectively. (See [1] and [2] for details.)References
  [1] Bartels, R.H., Stewart, G.W.
      Solution of the equation A X + X B = C.
      Comm. A.C.M., 15, pp. 820-826, 1972.
  [2] Penzl, T.
      Numerical solution of generalized Lyapunov equations.
      Advances in Comp. Math., vol. 8, pp. 33-48, 1998.
Numerical Aspects
8/3 * N**3 flops are required by the routine. Note that we count a single floating point arithmetic operation as one flop. The algorithm is backward stable if the eigenvalues of the pencil A - lambda * E are real. Otherwise, linear systems of order at most 4 are involved into the computation. These systems are solved by Gauss elimination with complete pivoting. The loss of stability of the Gauss elimination with complete pivoting is rarely encountered in practice.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None