Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

p?latrs

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

Syntax

void pslatrs (char *uplo , char *trans , char *diag , char *normin , MKL_INT *n , float *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , float *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , float *scale , float *cnorm , float *work );

void pdlatrs (char *uplo , char *trans , char *diag , char *normin , MKL_INT *n , double *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , double *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , double *scale , double *cnorm , double *work );

void pclatrs (char *uplo , char *trans , char *diag , char *normin , MKL_INT *n , MKL_Complex8 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , float *scale , float *cnorm , MKL_Complex8 *work );

void pzlatrs (char *uplo , char *trans , char *diag , char *normin , MKL_INT *n , MKL_Complex16 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , double *scale , double *cnorm , MKL_Complex16 *work );

Include Files

  • mkl_scalapack.h

Description

The p?latrsfunction 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 function will be extended in the future releases.

Input Parameters

uplo

Specifies whether the matrix A is upper or lower triangular.

= 'U': Upper triangular

= 'L': Lower triangular

trans

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

Specifies whether or not the matrix A is unit triangular.

= 'N': Non-unit triangular

= 'U': Unit triangular

normin

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

The order of the matrix A. n 0

a

Array of size 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) 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) array of size dlen_. The array descriptor for the distributed matrix A.

x

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

ix

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

jx

(global)

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

descx

(global and local)

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

cnorm

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+1)-th column of the matrix A, j=0, 1, ..., n-1. 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).

Temporary workspace.

Output Parameters

X

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

scale

Array of size 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+1)-th column of A, j=0, 1, ..., n-1.

See Also