# ?laqsb

Scales a symmetric band matrix, using scaling factors computed by ?pbequ.

## Syntax

call slaqsb( uplo, n, kd, ab, ldab, s, scond, amax, equed )

call dlaqsb( uplo, n, kd, ab, ldab, s, scond, amax, equed )

call claqsb( uplo, n, kd, ab, ldab, s, scond, amax, equed )

call zlaqsb( uplo, n, kd, ab, ldab, s, scond, amax, equed )

## Description

The routine equilibrates a symmetric band 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`.

kd

  INTEGER. The number of super-diagonals of the matrix A if `uplo = 'U'`, or the number of sub-diagonals if `uplo = 'L'`.

  `kd ≥ 0`.

ab

  REAL for slaqsb

  DOUBLE PRECISION for dlaqsb

  COMPLEX for claqsb

  COMPLEX*16 for zlaqsb

  Array, DIMENSION (ldab,n). On entry, the upper or lower triangle of the symmetric band matrix A, stored in the first kd+1 rows of the array. The j-th column of A is stored in the j-th column of the array ab as follows:

  if `uplo = 'U'`, `ab(kd+1+i-j,j) = A(i,j)` for `max(1,j-kd) ≤ i ≤ j`;

  if `uplo = 'L'`, `ab(1+i-j,j) = A(i,j)` for `j ≤ i ≤ min(n,j+kd)`.

ldab

  INTEGER. The leading dimension of the array ab.

  `ldab ≥ kd+1`.

s

  REAL for slaqsb/claqsb

  DOUBLE PRECISION for dlaqsb/zlaqsb

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

scond

  REAL for slaqsb/claqsb

  DOUBLE PRECISION for dlaqsb/zlaqsb

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

amax

  REAL for slaqsb/claqsb

  DOUBLE PRECISION for dlaqsb/zlaqsb

  Absolute value of largest matrix entry.

## Output Parameters

ab

  On exit, if `info = 0`, the triangular factor U or L from the Cholesky factorization `A = U'*U` or `A = L*L'` of the band matrix A, 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