###
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**