# p?laqge

Scales a general rectangular matrix, using row and column scaling factors computed by p?geequ .

## Syntax

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)

## Description

This 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 DIMENSION`(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, DIMENSION (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, DIMENSION `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, DIMENSION `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))`.

Parent topic: Auxiliary Routines