Developer Reference for Intel® oneAPI Math Kernel Library for C
p?laqsy
Scales a symmetric/Hermitian matrix, using scaling factors computed by p?poequ .
Syntax
voidpslaqsy ( char*uplo , MKL_INT*n , float*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , float*sr , float*sc , float*scond , float*amax , char*equed );
voidpdlaqsy ( char*uplo , MKL_INT*n , double*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , double*sr , double*sc , double*scond , double*amax , char*equed );
voidpclaqsy ( char*uplo , MKL_INT*n , MKL_Complex8*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , float*sr , float*sc , float*scond , float*amax , char*equed );
voidpzlaqsy ( char*uplo , MKL_INT*n , MKL_Complex16*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , double*sr , double*sc , double*scond , double*amax , char*equed );
Include Files
mkl_scalapack.h
Description
pslaqsy pdlaqsy pclaqsy pzlaqsy The p?laqsy routine function equilibrates a symmetric distributed matrix sub( A ) = A ( ia : ia + n -1, ja:ja+n-1) using the scaling factors in the vectors sr and sc . The scaling factors are computed by p?poequ (Computes row and column scaling factors intended to equilibrate a symmetric (Hermitian) positive definite distributed matrix and reduce its condition number.) .
Input Parameters
uplo
(global) Specifies the upper or lower triangular part of the symmetric distributed matrix sub(A) is to be referenced:
= ‘U’ : Upper triangular part; = ‘L’ : Lower triangular part.
n
(global)
The order of the distributed matrix sub( A ). n ≥ 0 .
- a
-
(local). REAL for pslaqsy DOUBLE PRECISION for pdlaqsy COMPLEX for pclaqsy COMPLEX*16 for pzlaqsy .
Pointer into the local memory to an array of size lld_a * LOCc ( ja + n -1) .
On entry, this array contains the local pieces of the distributed matrix sub( A ). On entry, the local pieces of the distributed symmetric matrix sub( A ). If uplo = 'U' , the leading n -by- n upper triangular part of sub( A ) contains the upper triangular part of the matrix, and the strictly lower triangular part of sub( A ) is not referenced. If uplo = 'L' , the leading n -by- n lower triangular part of sub( A ) contains the lower triangular part of the matrix, and the strictly upper triangular part of sub( A ) is not referenced.
ia , ja
(global)
The row and column indices in the global matrix A indicating the first row and the first column of the matrix sub( A ), respectively.
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A.
- sr
-
(local) REAL for pslaqsy DOUBLE PRECISION for pdlaqsy COMPLEX for pclaqsy COMPLEX*16 for pzlaqsy .
Array of size LOCr ( m_a ). The scale factors for the matrix A ( ia : ia + m -1, ja : ja + n -1). sr is aligned with the distributed matrix A , and replicated across every process column. sr is tied to the distributed matrix A .
- sc
-
(local) REAL for pslaqsy DOUBLE PRECISION for pdlaqsy COMPLEX for pclaqsy COMPLEX*16 for pzlaqsy .
Array of size LOCc ( m_a ). The scale factors for the matrix A ( ia : ia + m -1, ja : ja + n -1). sc is aligned with the distributed matrix A , and replicated across every process column. sc is tied to the distributed matrix A .
scond
(global).
DOUBLE PRECISION for pdlaqsy COMPLEX for pclaqsy COMPLEX*16 for pzlaqsy .
Ratio of the smallest sr [ i ] (respectively sc [ j ] ) to the largest sr [ i ] (respectively sc [ j ] ), with ia -1 ≤ i < ia + n -1 and ja -1 ≤ j < ja + n -1 .
- amax
-
(global). REAL for pslaqsy DOUBLE PRECISION for pdlaqsy COMPLEX for pclaqsy COMPLEX*16 for pzlaqsy . Absolute value of largest distributed submatrix entry.
Output Parameters
- a
-
On exit, if equed = 'Y' , the equilibrated matrix:
diag(sr(ia:ia+n-1)) * sub(A) * diag(sc(ja:ja+n-1)) diag( sria , …, sria+n-1 ) * sub( A ) * diag( scja , …, scja+n-1 ) .
equed
(global) .
Specifies whether or not equilibration was done. = ‘N’ : No equilibration. = ‘Y’ : Equilibration was done, that is, sub( A ) has been replaced by:
diag(sr(ia:ia+n-1)) * sub(A) * diag(sc(ja:ja+n-1)) diag( sria , …, sria+n-1 ) * sub( A ) * diag( scja , …, scja+n-1 ) .