**Purpose**

To solve for the N1-by-N2 matrix X, 1 <= N1,N2 <= 2, in op(TL)*X*op(TR) + ISGN*X = SCALE*B, where TL is N1-by-N1, TR is N2-by-N2, B is N1-by-N2, and ISGN = 1 or -1. op(T) = T or T', where T' denotes the transpose of T.

SUBROUTINE SB04PX( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, $ LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO ) C .. Scalar Arguments .. LOGICAL LTRANL, LTRANR INTEGER INFO, ISGN, LDB, LDTL, LDTR, LDX, N1, N2 DOUBLE PRECISION SCALE, XNORM C .. Array Arguments .. DOUBLE PRECISION B( LDB, * ), TL( LDTL, * ), TR( LDTR, * ), $ X( LDX, * )

**Mode Parameters**

LTRANL LOGICAL Specifies the form of op(TL) to be used, as follows: = .FALSE.: op(TL) = TL, = .TRUE. : op(TL) = TL'. LTRANR LOGICAL Specifies the form of op(TR) to be used, as follows: = .FALSE.: op(TR) = TR, = .TRUE. : op(TR) = TR'. ISGN INTEGER Specifies the sign of the equation as described before. ISGN may only be 1 or -1.

N1 (input) INTEGER The order of matrix TL. N1 may only be 0, 1 or 2. N2 (input) INTEGER The order of matrix TR. N2 may only be 0, 1 or 2. TL (input) DOUBLE PRECISION array, dimension (LDTL,N1) The leading N1-by-N1 part of this array must contain the matrix TL. LDTL INTEGER The leading dimension of array TL. LDTL >= MAX(1,N1). TR (input) DOUBLE PRECISION array, dimension (LDTR,N2) The leading N2-by-N2 part of this array must contain the matrix TR. LDTR INTEGER The leading dimension of array TR. LDTR >= MAX(1,N2). B (input) DOUBLE PRECISION array, dimension (LDB,N2) The leading N1-by-N2 part of this array must contain the right-hand side of the equation. LDB INTEGER The leading dimension of array B. LDB >= MAX(1,N1). SCALE (output) DOUBLE PRECISION The scale factor. SCALE is chosen less than or equal to 1 to prevent the solution overflowing. X (output) DOUBLE PRECISION array, dimension (LDX,N2) The leading N1-by-N2 part of this array contains the solution of the equation. Note that X may be identified with B in the calling statement. LDX INTEGER The leading dimension of array X. LDX >= MAX(1,N1). XNORM (output) DOUBLE PRECISION The infinity-norm of the solution.

INFO INTEGER = 0: successful exit; = 1: if TL and -ISGN*TR have almost reciprocal eigenvalues, so TL or TR is perturbed to get a nonsingular equation. NOTE: In the interests of speed, this routine does not check the inputs for errors.

The equivalent linear algebraic system of equations is formed and solved using Gaussian elimination with complete pivoting.

[1] Anderson, E., Bai, Z., Bischof, C., Demmel, J., Dongarra, J., Du Croz, J., Greenbaum, A., Hammarling, S., McKenney, A., Ostrouchov, S., and Sorensen, D. LAPACK Users' Guide: Second Edition. SIAM, Philadelphia, 1995.

The algorithm is stable and reliable, since Gaussian elimination with complete pivoting is used.

None

**Program Text**

None

None

None