Scales a general rectangular matrix, using row and column scaling factors computed by p?geequ .
Syntax
FORTRAN:
call pslaqge(m,n,a,ia,ja,desca,r,c,rowcnd,colcnd,amax,equed)
call pdlaqge(m,n,a,ia,ja,desca,r,c,rowcnd,colcnd,amax,equed)
call pclaqge(m,n,a,ia,ja,desca,r,c,rowcnd,colcnd,amax,equed)
call pzlaqge(m,n,a,ia,ja,desca,r,c,rowcnd,colcnd,amax,equed)
C:
voidpslaqge(MKL_INT*m,MKL_INT*n,float*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,float*r,float*c,float*rowcnd,float*colcnd,float*amax,char*equed);
voidpdlaqge(MKL_INT*m,MKL_INT*n,double*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,double*r,double*c,double*rowcnd,double*colcnd,double*amax,char*equed);
voidpclaqge(MKL_INT*m,MKL_INT*n,MKL_Complex8*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,float*r,float*c,float*rowcnd,float*colcnd,float*amax,char*equed);
voidpzlaqge(MKL_INT*m,MKL_INT*n,MKL_Complex16*a,MKL_INT*ia,MKL_INT*ja,MKL_INT*desca,double*r,double*c,double*rowcnd,double*colcnd,double*amax,char*equed);
Description
The p?laqge routine equilibrates a general m-by-n distributed matrix sub(A) = A(ia:ia+m-1
, ja:ja+n-1)
using the row and scaling factors in the vectors r and c computed by p?geequ.
Input Parameters
- m
(global) INTEGER.
The number of rows to be operated on, that is, the number of rows of the distributed submatrix sub(A).
(m≥0)
.- n
(global) INTEGER.
The number of columns to be operated on, that is, the number of columns of the distributed submatrix sub(A).
(n≥0)
.- a
(local).
REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
Pointer into the local memory to an array of size
(lld_a, LOCc(ja+n-1))
.On entry, this array contains the distributed matrix sub(A).
- 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.
- r
(local).
REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
Array, size
LOCr(m_a)
. The row scale factors for sub(A). r is aligned with the distributed matrix A, and replicated across every process column. r is tied to the distributed matrix A.- c
(local).
REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
Array, size
LOCc(n_a)
. The row scale factors for sub(A). c is aligned with the distributed matrix A, and replicated across every process column. c is tied to the distributed matrix A.- rowcnd
(local).
REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
The global ratio of the smallest r(i) to the largest r(i),
ia≤ i
≤ ia+m-1.- colcnd
(local).
REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
The global ratio of the smallest c(i) to the largest c(i),
ia≤ i
≤ ia+n-1.- amax
(global). REAL for pslaqge
DOUBLE PRECISION for pdlaqge
COMPLEX for pclaqge
COMPLEX*16 for pzlaqge.
Absolute value of largest distributed submatrix entry.
Output Parameters
- a
(local).
On exit, the equilibrated distributed matrix. See equed for the form of the equilibrated distributed submatrix.
- equed
(global) CHARACTER.
Specifies the form of equilibration that was done.
= 'N': No equilibration
= 'R': Row equilibration, that is, sub(A) has been pre-multiplied by
diag(r(ia:ia+m-1))
,= 'C': column equilibration, that is, sub(A) has been post-multiplied by
diag(c(ja:ja+n-1))
,= 'B': Both row and column equilibration, that is, sub(A) has been replaced by
diag(r(ia:ia+m-1))* sub(A) * diag(c(ja:ja+n-1))
.