# p?latrs

Solves a triangular system of equations with the scale factor set to prevent overflow.

## Syntax

call pslatrs(uplo, trans, diag, normin, n, a, ia, ja, desca, x, ix, jx, descx, scale, cnorm, work)

call pdlatrs(uplo, trans, diag, normin, n, a, ia, ja, desca, x, ix, jx, descx, scale, cnorm, work)

call pclatrs(uplo, trans, diag, normin, n, a, ia, ja, desca, x, ix, jx, descx, scale, cnorm, work)

call pzlatrs(uplo, trans, diag, normin, n, a, ia, ja, desca, x, ix, jx, descx, scale, cnorm, work)

## Description

The p?latrsroutine solves a triangular system of equations Ax = sb, ATx = sb or AHx = sb, where s is a scale factor set to prevent overflow. The description of the routine will be extended in the future releases.

## Input Parameters

uplo

CHARACTER*1.

Specifies whether the matrix A is upper or lower triangular.

= 'U': Upper triangular

= 'L': Lower triangular

trans

CHARACTER*1.

Specifies the operation applied to Ax.

= 'N': Solve Ax = s*b (no transpose)

= 'T': Solve ATx = s*b (transpose)

= 'C': Solve AHx = s*b (conjugate transpose),

where s - is a scale factor

diag

CHARACTER*1.

Specifies whether or not the matrix A is unit triangular.

= 'N': Non-unit triangular

= 'U': Unit triangular

normin

CHARACTER*1.

Specifies whether cnorm has been set or not.

= 'Y': cnorm contains the column norms on entry;

= 'N': cnorm is not set on entry. On exit, the norms will be computed and stored in cnorm.

n

INTEGER.

The order of the matrix A. n 0

a

REAL for pslatrs/pclatrs

DOUBLE PRECISION for pdlatrs/pzlatrs

Array of size ldaby n. Contains the triangular matrix A.

If uplo = U, the leading n-by-n upper triangular part of the array a contains the upper triangular matrix, and the strictly lower triangular part of a is not referenced.

If uplo = 'L', the leading n-by-n lower triangular part of the array a contains the lower triangular matrix, and the strictly upper triangular part of a is not referenced.

If diag = 'U', the diagonal elements of a are also not referenced and are assumed to be 1.

ia, ja

(global) INTEGER. The row and column indices in the global matrix A indicating the first row and the first column of the submatrix A, respectively.

desca

(global and local) INTEGER array of size dlen_. The array descriptor for the distributed matrix A.

x

REAL for pslatrs/pclatrs

DOUBLE PRECISION for pdlatrs/pzlatrs

Array of size n. On entry, the right hand side b of the triangular system.

ix

(global)INTEGER.The row index in the global matrix X indicating the first row of sub(x).

jx

(global) INTEGER.

The column index in the global matrix X indicating the first column of sub(X).

descx

(global and local) INTEGER.

Array of size dlen_. The array descriptor for the distributed matrix X.

cnorm

REAL for pslatrs/pclatrs

DOUBLE PRECISION for pdlatrs/pzlatrs.

Array of size n. If normin = 'Y', cnorm is an input argument and cnorm(j) contains the norm of the off-diagonal part of the j-th column of A. If trans = 'N', cnorm(j) must be greater than or equal to the infinity-norm, and if trans = 'T' or 'C', cnorm(j) must be greater than or equal to the 1-norm.

work

(local).

REAL for pslatrs

DOUBLE PRECISION for pdlatrs

COMPLEX for pclatrs

COMPLEX*16 for pzlatrs.

Temporary workspace.

## Output Parameters

X

On exit, x is overwritten by the solution vector x.

scale

REAL for pslatrs/pclatrs

DOUBLE PRECISION for pdlatrs/pzlatrs.

Array of size ldaby n. The scaling factor s for the triangular system as described above.

If scale = 0, the matrix A is singular or badly scaled, and the vector x is an exact or approximate solution to Ax = 0.

cnorm

If normin = 'N', cnorm is an output argument and cnorm(j) returns the 1-norm of the off-diagonal part of the j-th column of A.