# ?laqge

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

## Syntax

call slaqge( m, n, a, lda, r, c, rowcnd, colcnd, amax, equed )

call dlaqge( m, n, a, lda, r, c, rowcnd, colcnd, amax, equed )

call claqge( m, n, a, lda, r, c, rowcnd, colcnd, amax, equed )

call zlaqge( m, n, a, lda, r, c, rowcnd, colcnd, amax, equed )

## Description

The routine equilibrates a general m-by-n matrix A using the row and column scaling factors in the vectors r and c.

## Input Parameters

m

  INTEGER. The number of rows of the matrix A.

  `m ≥ 0`.

n

  INTEGER. The number of columns of the matrix A.

  `n ≥ 0`.

a

  REAL for slaqge

  DOUBLE PRECISION for dlaqge

  COMPLEX for claqge

  COMPLEX*16 for zlaqge

  Array, DIMENSION (lda,n). On entry, the m-by-n matrix A.

lda

  INTEGER. The leading dimension of the array a.

  `lda ≥ max(m,1)`.

r

  REAL for slanqge/claqge

  DOUBLE PRECISION for dlaqge/zlaqge

  Array, DIMENSION (m). The row scale factors for A.

c

  REAL for slanqge/claqge

  DOUBLE PRECISION for dlaqge/zlaqge

  Array, DIMENSION (n). The column scale factors for A.

rowcnd

  REAL for slanqge/claqge

  DOUBLE PRECISION for dlaqge/zlaqge

  Ratio of the smallest r(i) to the largest r(i).

colcnd

  REAL for slanqge/claqge

  DOUBLE PRECISION for dlaqge/zlaqge

  Ratio of the smallest c(i) to the largest c(i).

amax

  REAL for slanqge/claqge

  DOUBLE PRECISION for dlaqge/zlaqge

  Absolute value of largest matrix entry.

## Output Parameters

a

  On exit, the equilibrated matrix.

  See equed for the form of the equilibrated matrix.

equed

  CHARACTER*1.

  Specifies the form of equilibration that was done.

  If `equed = 'N'`: No equilibration

  If `equed = 'R'`: Row equilibration, that is, A has been premultiplied by diag(r).

  If `equed = 'C'`: Column equilibration, that is, A has been postmultiplied by diag(c).

  If `equed = 'B'`: Both row and column equilibration, that is, A has been replaced by `diag(r)*A*diag(c)`.

## Application Notes

The routine uses internal parameters thresh, large, and small, which have the following meaning. thresh is a threshold value used to decide if row or column scaling should be done based on the ratio of the row or column scaling factors. If `rowcnd < thresh`, row scaling is done, and if `colcnd < thresh`, column scaling is done. large and small are threshold values used to decide if row scaling should be done based on the absolute size of the largest matrix element. If `amax > large` or `amax < small`, row scaling is done.

Parent topic: Auxiliary Routines