?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 )

Include Files

  • Fortran: mkl.fi
  • C: mkl.h

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

DOUBLE COMPLEX 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 ≤ ij;

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

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.

For more complete information about compiler optimizations, see our Optimization Notice.