PCPOEQU(l) | LAPACK routine (version 1.5) | PCPOEQU(l) |
NAME¶
PCPOEQU - compute row and column scalings intended to equilibrate a distributed Hermitian positive definite matrix sub( A ) = A(IA:IA+N-1,JA:JA+N-1) and reduce its condition number (with respect to the two-norm)SYNOPSIS¶
- SUBROUTINE PCPOEQU(
- N, A, IA, JA, DESCA, SR, SC, SCOND, AMAX, INFO )
PURPOSE¶
PCPOEQU computes row and column scalings intended to equilibrate a distributed Hermitian positive definite matrix sub( A ) = A(IA:IA+N-1,JA:JA+N-1) and reduce its condition number (with respect to the two-norm). SR and SC contain the scale factors, S(i) = 1/sqrt(A(i,i)), chosen so that the scaled distri- buted matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has ones on the diagonal. This choice of SR and SC puts the condition number of B within a factor N of the smallest possible condition number over all possible diagonal scalings.DTYPE_A = 1.
the BLACS process grid A is distribu-
ted over. The context itself is glo-
bal, but the handle (the integer
value) may vary.
array A.
array A.
the rows of the array.
the columns of the array.
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.
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( 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¶
- N (global input) INTEGER
- The number of rows and columns to be operated on i.e the order of the distributed submatrix sub( A ). N >= 0.
- A (local input) COMPLEX pointer into the local memory to an
- array of local dimension ( LLD_A, LOCc(JA+N-1) ), the N-by-N Hermitian positive definite distributed matrix sub( A ) whose scaling factors are to be computed. Only the diagonal elements of sub( A ) are referenced.
- 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.
- SR (local output) REAL array, dimension LOCr(M_A)
- If INFO = 0, SR(IA:IA+N-1) contains the row scale factors for sub( A ). SR is aligned with the distributed matrix A, and replicated across every process column. SR is tied to the distributed matrix A.
- SC (local output) REAL array, dimension LOCc(N_A)
- If INFO = 0, SC(JA:JA+N-1) contains the column scale factors
- SCOND (global output) REAL
- If INFO = 0, SCOND contains the ratio of the smallest SR(i) (or SC(j)) to the largest SR(i) (or SC(j)), with IA <= i <= IA+N-1 and JA <= j <= JA+N-1. If SCOND >= 0.1 and AMAX is neither too large nor too small, it is not worth scaling by SR (or SC).
- AMAX (global output) REAL
- Absolute value of largest matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled.
- INFO (global output) INTEGER
- = 0: successful exit
12 May 1997 | LAPACK version 1.5 |