Purpose
To compute the inverse (Ai-lambda*Ei,Bi,Ci,Di) of a given descriptor system (A-lambda*E,B,C,D).Specification
      SUBROUTINE AG07BD( JOBE, N, M, A, LDA, E, LDE, B, LDB, C, LDC,
     $                   D, LDD, AI, LDAI, EI, LDEI, BI, LDBI, CI, LDCI,
     $                   DI, LDDI, INFO )
C     .. Scalar Arguments ..
      CHARACTER          JOBE
      INTEGER            INFO, LDA, LDAI, LDB, LDBI, LDC, LDCI,
     $                   LDD, LDDI, LDE, LDEI, M, N
C     .. Array Arguments ..
      DOUBLE PRECISION   A(LDA,*), AI(LDAI,*), B(LDB,*), BI(LDBI,*),
     $                   C(LDC,*), CI(LDCI,*), D(LDD,*), DI(LDDI,*),
     $                   E(LDE,*), EI(LDEI,*)
Arguments
Mode Parameters
  JOBE    CHARACTER*1
          Specifies whether E is a general square or an identity
          matrix as follows:
          = 'G':  E is a general square matrix;
          = 'I':  E is the identity matrix.
Input/Output Parameters
  N       (input) INTEGER
          The order of the square matrices A and E;
          also the number of rows of matrix B and the number of
          columns of matrix C.  N >= 0.
  M       (input) INTEGER
          The number of system inputs and outputs, i.e., the number
          of columns of matrices B and D and the number of rows of
          matrices C and D.  M >= 0.
  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
          The leading N-by-N part of this array must contain the
          state matrix A of the original system.
  LDA     INTEGER
          The leading dimension of the array A.  LDA >= MAX(1,N).
  E       (input) DOUBLE PRECISION array, dimension (LDE,N)
          If JOBE = 'G', the leading N-by-N part of this array must
          contain the descriptor matrix E of the original system.
          If JOBE = 'I', then E is assumed to be the identity
          matrix and is not referenced.
  LDE     INTEGER
          The leading dimension of the array E.
          LDE >= MAX(1,N), if JOBE = 'G';
          LDE >= 1,        if JOBE = 'I'.
  B       (input) DOUBLE PRECISION array, dimension (LDB,M)
          The leading N-by-M part of this array must contain the
          input matrix B of the original system.
  LDB     INTEGER
          The leading dimension of the array B.  LDB >= MAX(1,N).
  C       (input) DOUBLE PRECISION array, dimension (LDC,N)
          The leading M-by-N part of this array must contain the
          output matrix C of the original system.
  LDC     INTEGER
          The leading dimension of the array C.  LDC >= MAX(1,M).
  D       (input) DOUBLE PRECISION array, dimension (LDD,M)
          The leading M-by-M part of this array must contain the
          feedthrough matrix D of the original system.
  LDD     INTEGER
          The leading dimension of the array D.  LDD >= MAX(1,M).
  AI      (output) DOUBLE PRECISION array, dimension (LDAI,N+M)
          The leading (N+M)-by-(N+M) part of this array contains
          the state matrix Ai of the inverse system.
          If LDAI = LDA >= N+M, then AI and A can share the same
          storage locations.
  LDAI    INTEGER
          The leading dimension of the array AI.
          LDAI >= MAX(1,N+M).
  EI      (output) DOUBLE PRECISION array, dimension (LDEI,N+M)
          The leading (N+M)-by-(N+M) part of this array contains
          the descriptor matrix Ei of the inverse system.
          If LDEI = LDE >= N+M, then EI and E can share the same
          storage locations.
  LDEI    INTEGER
          The leading dimension of the array EI.
          LDEI >= MAX(1,N+M).
  BI      (output) DOUBLE PRECISION array, dimension (LDBI,M)
          The leading (N+M)-by-M part of this array contains
          the input matrix Bi of the inverse system.
          If LDBI = LDB >= N+M, then BI and B can share the same
          storage locations.
  LDBI    INTEGER
          The leading dimension of the array BI.
          LDBI >= MAX(1,N+M).
  CI      (output) DOUBLE PRECISION array, dimension (LDCI,N+M)
          The leading M-by-(N+M) part of this array contains
          the output matrix Ci of the inverse system.
          If LDCI = LDC, CI and C can share the same storage
          locations.
  LDCI    INTEGER
          The leading dimension of the array CI.  LDCI >= MAX(1,M).
  DI      (output) DOUBLE PRECISION array, dimension (LDDI,M)
          The leading M-by-M part of this array contains
          the feedthrough matrix Di = 0 of the inverse system.
          DI and D can share the same storage locations.
  LDDI    INTEGER
          The leading dimension of the array DI.  LDDI >= MAX(1,M).
Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value.
Method
  The matrices of the inverse system are computed with the formulas
             ( E  0 )        ( A  B )         (  0 )
        Ei = (      ) , Ai = (      ) ,  Bi = (    ),
             ( 0  0 )        ( C  D )         ( -I )
        Ci = ( 0  I ),  Di = 0.
Further Comments
The routine does not perform an invertibility test. This check can be performed by using the SLICOT routines AB08NX or AG08BY.Example
Program Text
NoneProgram Data
NoneProgram Results
None