# 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

This routine 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, DIMENSION (lda, 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 array a indicating the first row and the first column of the submatrix A, respectively.

desca

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

x

  REAL for pslatrs/pclatrs

  DOUBLE PRECISION for pdlatrs/pzlatrs

  Array, DIMENSION (n). On entry, the right hand side b of the triangular system.

ix

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

jx

  (global) INTEGER.

  The column index in the global array x indicating the first column of sub(x).

descx

  (global and local) INTEGER.

  Array, DIMENSION (dlen_). The array descriptor for the distributed matrix X.

cnorm

  REAL for pslatrs/pclatrs

  DOUBLE PRECISION for pdlatrs/pzlatrs.

  Array, DIMENSION (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, DIMENSION (lda, 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.

Parent topic: Auxiliary Routines