ZLAVSP
Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
November 2006
November 2006
Purpose
ZLAVSP performs one of the matrix-vector operations
x := A*x or x := A^T*x,
where x is an N element vector and A is one of the factors
from the symmetric factorization computed by ZSPTRF.
ZSPTRF produces a factorization of the form
U * D * U^T or L * D * L^T,
where U (or L) is a product of permutation and unit upper (lower)
triangular matrices, U^T (or L^T) is the transpose of
U (or L), and D is symmetric and block diagonal with 1 x 1 and
2 x 2 diagonal blocks. The multipliers for the transformations
and the upper or lower triangular parts of the diagonal blocks
are stored columnwise in packed format in the linear array A.
If TRANS = 'N' or 'n', ZLAVSP multiplies either by U or U * D
(or L or L * D).
If TRANS = 'C' or 'c', ZLAVSP multiplies either by U^T or D * U^T
(or L^T or D * L^T ).
x := A*x or x := A^T*x,
where x is an N element vector and A is one of the factors
from the symmetric factorization computed by ZSPTRF.
ZSPTRF produces a factorization of the form
U * D * U^T or L * D * L^T,
where U (or L) is a product of permutation and unit upper (lower)
triangular matrices, U^T (or L^T) is the transpose of
U (or L), and D is symmetric and block diagonal with 1 x 1 and
2 x 2 diagonal blocks. The multipliers for the transformations
and the upper or lower triangular parts of the diagonal blocks
are stored columnwise in packed format in the linear array A.
If TRANS = 'N' or 'n', ZLAVSP multiplies either by U or U * D
(or L or L * D).
If TRANS = 'C' or 'c', ZLAVSP multiplies either by U^T or D * U^T
(or L^T or D * L^T ).
Arguments
UPLO |
CHARACTER*1
On entry, UPLO specifies whether the triangular matrix
stored in A is upper or lower triangular. UPLO = 'U' or 'u' The matrix is upper triangular. UPLO = 'L' or 'l' The matrix is lower triangular. Unchanged on exit. |
TRANS |
CHARACTER*1
On entry, TRANS specifies the operation to be performed as
follows: TRANS = 'N' or 'n' x := A*x. TRANS = 'T' or 't' x := A^T*x. Unchanged on exit. |
DIAG |
CHARACTER*1
On entry, DIAG specifies whether the diagonal blocks are
assumed to be unit matrices, as follows: DIAG = 'U' or 'u' Diagonal blocks are unit matrices. DIAG = 'N' or 'n' Diagonal blocks are non-unit. Unchanged on exit. |
N |
INTEGER
On entry, N specifies the order of the matrix A.
N must be at least zero. Unchanged on exit. |
NRHS |
INTEGER
On entry, NRHS specifies the number of right hand sides,
i.e., the number of vectors x to be multiplied by A. NRHS must be at least zero. Unchanged on exit. |
A |
COMPLEX*16 array, dimension( N*(N+1)/2 )
On entry, A contains a block diagonal matrix and the
multipliers of the transformations used to obtain it, stored as a packed triangular matrix. Unchanged on exit. |
IPIV |
INTEGER array, dimension( N )
On entry, IPIV contains the vector of pivot indices as
determined by ZSPTRF. If IPIV( K ) = K, no interchange was done. If IPIV( K ) <> K but IPIV( K ) > 0, then row K was inter- changed with row IPIV( K ) and a 1 x 1 pivot block was used. If IPIV( K ) < 0 and UPLO = 'U', then row K-1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used. If IPIV( K ) < 0 and UPLO = 'L', then row K+1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used. |
B |
COMPLEX*16 array, dimension( LDB, NRHS )
On entry, B contains NRHS vectors of length N.
On exit, B is overwritten with the product A * B. |
LDB |
INTEGER
On entry, LDB contains the leading dimension of B as
declared in the calling program. LDB must be at least max( 1, N ). Unchanged on exit. |
INFO |
INTEGER
INFO is the error flag.
On exit, a value of 0 indicates a successful exit. A negative value, say -K, indicates that the K-th argument has an illegal value. |