PDLANTR(3) ScaLAPACK routine of NEC Numeric Library Collection PDLANTR(3) NAME PDLANTR - return the value of the one norm, or the Frobenius norm, SYNOPSIS DOUBLE PRECISION FUNCTION PDLANTR( NORM, UPLO, DIAG, M, N, A, IA, JA, DESCA, WORK ) CHARACTER DIAG, NORM, UPLO INTEGER IA, JA, M, N INTEGER DESCA( * ) DOUBLE PRECISION A( * ), WORK( * ) PURPOSE PDLANTR returns the value of the one norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a trape- zoidal or triangular distributed matrix sub( A ) denoting A(IA:IA+M-1, JA:JA+N-1). PDLANTR returns the value ( max(abs(A(i,j))), NORM = 'M' or 'm' with ia <= i <= ia+m-1, ( and ja <= j <= ja+n-1, ( ( norm1( sub( A ) ), NORM = '1', 'O' or 'o' ( ( normI( sub( A ) ), NORM = 'I' or 'i' ( ( normF( sub( A ) ), NORM = 'F', 'f', 'E' or 'e' where norm1 denotes the one norm of a matrix (maximum column sum), normI denotes the infinity norm of a matrix (maximum row sum) and normF denotes the Frobenius norm of a matrix (square root of sum of squares). Note that max(abs(A(i,j))) is not a matrix norm. Notes ===== Each global data object is described by an associated description vec- tor. This vector stores the information required to establish the map- ping between an object element and its corresponding process and memory location. Let A be a generic term for any 2D block cyclicly distributed array. Such a global array has an associated description vector DESCA. In the following comments, the character _ should be read as "of the global array". NOTATION STORED IN EXPLANATION --------------- -------------- -------------------------------------- DTYPE_A(global) DESCA( DTYPE_ )The descriptor type. In this case, DTYPE_A = 1. CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating the BLACS process grid A is distribu- ted over. The context itself is glo- bal, but the handle (the integer value) may vary. M_A (global) DESCA( M_ ) The number of rows in the global array A. N_A (global) DESCA( N_ ) The number of columns in the global array A. MB_A (global) DESCA( MB_ ) The blocking factor used to distribute the rows of the array. NB_A (global) DESCA( NB_ ) The blocking factor used to distribute the columns of the array. RSRC_A (global) DESCA( RSRC_ ) The process row over which the first row of the array A is distributed. CSRC_A (global) DESCA( CSRC_ ) The process column over which the first column of the array A is distributed. LLD_A (local) DESCA( LLD_ ) The leading dimension of the local array. LLD_A >= MAX(1,LOCr(M_A)). Let K be the number of rows or columns of a distributed matrix, and assume that its process grid has dimension p x q. LOCr( K ) denotes the number of elements of K that a process would receive if K were distributed over the p processes of its process col- umn. Similarly, LOCc( K ) denotes the number of elements of K that a process would receive if K were distributed over the q processes of its process row. The values of LOCr() and LOCc() may be determined via a call to the ScaLAPACK tool function, NUMROC: LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ), LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ). An upper bound for these quantities may be computed by: LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A ARGUMENTS NORM (global input) CHARACTER Specifies the value to be returned in PDLANTR as described above. UPLO (global input) CHARACTER Specifies whether the matrix sub( A ) is upper or lower trape- zoidal. = 'U': Upper trapezoidal = 'L': Lower trapezoidal Note that sub( A ) is triangular instead of trapezoidal if M = N. DIAG (global input) CHARACTER Specifies whether or not the distributed matrix sub( A ) has unit diagonal. = 'N': Non-unit diagonal = 'U': Unit diagonal M (global input) INTEGER The number of rows to be operated on i.e the number of rows of the distributed submatrix sub( A ). When M = 0, PDLANTR is set to zero. M >= 0. N (global input) INTEGER The number of columns to be operated on i.e the number of columns of the distributed submatrix sub( A ). When N = 0, PDLANTR is set to zero. N >= 0. A (local input) DOUBLE PRECISION pointer into the local memory to an array of dimension (LLD_A, LOCc(JA+N-1) ) containing the local pieces of sub( A ). IA (global input) INTEGER The row index in the global array A indicating the first row of sub( A ). JA (global input) INTEGER The column index in the global array A indicating the first column of sub( A ). DESCA (global and local input) INTEGER array of dimension DLEN_. The array descriptor for the distributed matrix A. WORK (local workspace) DOUBLE PRECISION array dimension (LWORK) LWORK >= 0 if NORM = 'M' or 'm' (not referenced), Nq0 if NORM = '1', 'O' or 'o', Mp0 if NORM = 'I' or 'i', 0 if NORM = 'F', 'f', 'E' or 'e' (not referenced), where IROFFA = MOD( IA-1, MB_A ), ICOFFA = MOD( JA-1, NB_A ), 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 ), INDXG2P and NUMROC are ScaLAPACK tool functions; MYROW, MYCOL, NPROW and NPCOL can be determined by calling the subroutine BLACS_GRIDINFO. ScaLAPACK routine 31 October 2017 PDLANTR(3)