SB04MW

Solving a linear algebraic system whose coefficient matrix (stored compactly) has zeros below the first subdiagonal

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

  To solve a linear algebraic system of order M whose coefficient
  matrix is in upper Hessenberg form, stored compactly, row-wise.

Specification
      SUBROUTINE SB04MW( M, D, IPR, INFO )
C     .. Scalar Arguments ..
      INTEGER           INFO, M
C     .. Array Arguments ..
      INTEGER           IPR(*)
      DOUBLE PRECISION  D(*)

Arguments

Input/Output Parameters

  M       (input) INTEGER
          The order of the system.  M >= 0.

  D       (input/output) DOUBLE PRECISION array, dimension
          (M*(M+1)/2+2*M)
          On entry, the first M*(M+1)/2 + M elements of this array
          must contain an upper Hessenberg matrix, stored compactly,
          row-wise, and the next M elements must contain the right
          hand side of the linear system, as set by SLICOT Library
          routine SB04MY.
          On exit, the content of this array is updated, the last M
          elements containing the solution with components
          interchanged (see IPR).

  IPR     (output) INTEGER array, dimension (2*M)
          The leading M elements contain information about the
          row interchanges performed for solving the system.
          Specifically, the i-th component of the solution is
          specified by IPR(i).

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          = 1:  if a singular matrix was encountered.

Method
  Gaussian elimination with partial pivoting is used. The rows of
  the matrix are not actually permuted, only their indices are
  interchanged in array IPR.

References
  [1] Golub, G.H., Nash, S. and Van Loan, C.F.
      A Hessenberg-Schur method for the problem AX + XB = C.
      IEEE Trans. Auto. Contr., AC-24, pp. 909-913, 1979.

Numerical Aspects
  None.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index