Returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value of any element, of a real symmetric or a complex Hermitian matrix.
Syntax
FORTRAN:
val=pslansy(norm,uplo,n,a,ia,ja,desca,work)
val=pdlansy(norm,uplo,n,a,ia,ja,desca,work)
val=pclansy(norm,uplo,n,a,ia,ja,desca,work)
val=pzlansy(norm,uplo,n,a,ia,ja,desca,work)
val=pclanhe(norm,uplo,n,a,ia,ja,desca,work)
val=pzlanhe(norm,uplo,n,a,ia,ja,desca,work)
C:
floatpslansy(char*norm,char*uplo,MKL_INT*n,float*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,float*work);
doublepdlansy(char*norm,char*uplo,MKL_INT*n,double*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,double*work);
floatpclansy(char*norm,char*uplo,MKL_INT*n,MKL_Complex8*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,float*work);
doublepzlansy(char*norm,char*uplo,MKL_INT*n,MKL_Complex16*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,double*work);
floatpclanhe(char*norm,char*uplo,MKL_INT*n,MKL_Complex8*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,float*work);
doublepzlanhe(char*norm,char*uplo,MKL_INT*n,MKL_Complex16*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,double*work);
Description
The p?lansy and p?lanhe routines return the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a distributed matrix sub(A) =
.A(ia:ia+m-1
, ja:ja+n-1)
Input Parameters
- norm
(global) CHARACTER. Specifies what value is returned by the routine:
= 'M' or 'm':
val = max(abs(Aij))
, largest absolute value of the matrix A, it s not a matrix norm.= '1' or 'O' or 'o':
val = norm1(A)
, 1-norm of the matrix A (maximum column sum),= 'I' or 'i':
val = normI(A)
, infinity norm of the matrix A (maximum row sum),= 'F', 'f', 'E' or 'e':
val = normF(A)
, Frobenius norm of the matrix A (square root of sum of squares).- uplo
(global) CHARACTER. Specifies whether the upper or lower triangular part of the symmetric matrix sub(A) is to be referenced.
= 'U': Upper triangular part of sub(A) is referenced,
= 'L': Lower triangular part of sub(A) is referenced.
- n
(global) INTEGER.
The number of columns to be operated on i.e the number of columns of the distributed submatrix sub(A). When
n = 0
, p?lansy is set to zero. n≥ 0.- a
(local).
REAL for pslansy
DOUBLE PRECISION for pdlansy
COMPLEX for pclansy, pclanhe
COMPLEX*16 for pzlansy, pzlanhe.
Pointer into the local memory to an array of size (lld_a, LOCc(ja+n-1)) containing the local pieces of the distributed matrix sub(A).
If
uplo = 'U'
, the leading n-by-n upper triangular part of sub(A) contains the upper triangular matrix whose norm is to be computed, and the strictly lower triangular part of this matrix is not referenced. Ifuplo = 'L'
, the leading n-by-n lower triangular part of sub(A) contains the lower triangular matrix whose norm is to be computed, and the strictly upper triangular part of sub(A) is not referenced.- 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 sub(A), respectively.
- desca
(global and local) INTEGER array, size (dlen_). The array descriptor for the distributed matrix A.
- work
(local).
REAL for pslansy, pclansy, pclanhe
DOUBLE PRECISION for pdlansy, pzlansy, pzlanhe
Array size (lwork).
lwork≥ 0 if norm = 'M' or 'm' (not referenced),
2*nq0+mp0+ldw
if norm = '1', 'O' or 'o', 'I' or 'i',where ldw is given by:
if( nprow.ne.npcol ) then
ldw = mb_a*iceil(iceil(np0,mb_a),(lcm/nprow))
else
ldw = 0
end if
0 if
norm = 'F'
, 'f', 'E' or 'e' (not referenced),where lcm is the least common multiple of nprow and
iroffa = mod(ia-1, mb_a ), icoffa = mod( ja-1, nb_a),npcol, lcm = ilcm( nprow, npcol )
andiceil(x,y)
is a ScaLAPACK function that returns ceiling(x/y)
.iarow = indxg2p(ia, mb_a, myrow, rsrc_a, nprow),
iacol = indxg2p(ja, nb_a, mycol, csrc_a, npcol),
mp0 = numroc(m+iroffa, mb_a, myrow, iarow, nprow),
nq0 = numroc(n+icoffa, nb_a, mycol, iacol, npcol),
ilcm, iceil, indxg2p, and numroc are ScaLAPACK tool functions; myrow, mycol, nprow, and npcol can be determined by calling the subroutine blacs_gridinfo.