# ?laqsp

Scales a symmetric/Hermitian matrix in packed storage, using scaling factors computed by ?ppequ.

## Syntax

call slaqsp( uplo, n, ap, s, scond, amax, equed )

call dlaqsp( uplo, n, ap, s, scond, amax, equed )

call claqsp( uplo, n, ap, s, scond, amax, equed )

call zlaqsp( uplo, n, ap, s, scond, amax, equed )

## Description

The routine ?laqsp equilibrates a symmetric matrix A using the scaling factors in the vector s.

## Input Parameters

uplo

  CHARACTER*1.

  Specifies whether the upper or lower triangular part of the symmetric matrix A is stored.

  If `uplo = 'U'`: upper triangular.

  If `uplo = 'L'`: lower triangular.

n

  INTEGER. The order of the matrix A. `n ≥ 0`.

ap

  REAL for slaqsp

  DOUBLE PRECISION for dlaqsp

  COMPLEX for claqsp

  COMPLEX*16 for zlaqsp

  Array, DIMENSION (`n(n+1)/2`).

  On entry, the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array ap as follows:

  if `uplo = 'U'`, `ap(i + (j-1)j/2) = A(i,j)` for `1 ≤ i ≤ j`;

  if `uplo = 'L'`, `ap(i + (j-1)(2n-j)/2) = A(i,j)` for `j≤i≤n`.

s

  REAL for slaqsp/claqsp

  DOUBLE PRECISION for dlaqsp/zlaqsp

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

scond

  REAL for slaqsp/claqsp

  DOUBLE PRECISION for dlaqsp/zlaqsp

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

amax

  REAL for slaqsp/claqsp

  DOUBLE PRECISION for dlaqsp/zlaqsp

  Absolute value of largest matrix entry.

## Output Parameters

ap

  On exit, the equilibrated matrix: `diag(s)*A*diag(s)`, in the same storage format as A.

equed

  CHARACTER*1.

  Specifies whether or not equilibration was done.

  If `equed = 'N'`: No equilibration.

  If `equed = 'Y'`: Equilibration was done, that is, A has been replaced by `diag(s)*A*diag(s)`.

## 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 scaling should be based on the ratio of the scaling factors. If `scond < thresh`, scaling is done. large and small are threshold values used to decide if scaling should be done based on the absolute size of the largest matrix element. If `amax > large` or `amax < small`, scaling is done.

Parent topic: Auxiliary Routines