zhbmv (l)  Linux Man Pages
zhbmv: performs the matrixvector operation y := alpha*A*x + beta*y,
NAME
ZHBMV  performs the matrixvector operation y := alpha*A*x + beta*y,SYNOPSIS
 SUBROUTINE ZHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
 DOUBLE COMPLEX ALPHA,BETA
 INTEGER INCX,INCY,K,LDA,N
 CHARACTER UPLO
 DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
PURPOSE
ZHBMV performs the matrixvector operationwhere alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian band matrix, with k superdiagonals.
ARGUMENTS
 UPLO  CHARACTER*1.

On entry, UPLO specifies whether the upper or lower
triangular part of the band matrix A is being supplied as
follows:
UPLO = aqUaq or aquaq The upper triangular part of A is being supplied.
UPLO = aqLaq or aqlaq The lower triangular part of A is being supplied.
Unchanged on exit.
 N  INTEGER.
 On entry, N specifies the order of the matrix A. N must be at least zero. Unchanged on exit.
 K  INTEGER.
 On entry, K specifies the number of superdiagonals of the matrix A. K must satisfy 0 .le. K. Unchanged on exit.
 ALPHA  COMPLEX*16 .
 On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
 A  COMPLEX*16 array of DIMENSION ( LDA, n ).

Before entry with UPLO = aqUaq or aquaq, the leading ( k + 1 )
by n part of the array A must contain the upper triangular
band part of the hermitian matrix, supplied column by
column, with the leading diagonal of the matrix in row
( k + 1 ) of the array, the first superdiagonal starting at
position 2 in row k, and so on. The top left k by k triangle
of the array A is not referenced.
The following program segment will transfer the upper
triangular part of a hermitian band matrix from conventional
full matrix storage to band storage:
DO 20, J = 1, N M = K + 1  J DO 10, I = MAX( 1, J  K ), J A( M + I, J ) = matrix( I, J ) 10 CONTINUE 20 CONTINUE
Before entry with UPLO = aqLaq or aqlaq, the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the hermitian matrix, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first subdiagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced. The following program segment will transfer the lower triangular part of a hermitian band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N M = 1  J DO 10, I = J, MIN( N, J + K ) A( M + I, J ) = matrix( I, J ) 10 CONTINUE 20 CONTINUE
Note that the imaginary parts of the diagonal elements need not be set and are assumed to be zero. Unchanged on exit.
 LDA  INTEGER.
 On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ). Unchanged on exit.
 X  COMPLEX*16 array of DIMENSION at least
 ( 1 + ( n  1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x. Unchanged on exit.
 INCX  INTEGER.
 On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Unchanged on exit.
 BETA  COMPLEX*16 .
 On entry, BETA specifies the scalar beta. Unchanged on exit.
 Y  COMPLEX*16 array of DIMENSION at least
 ( 1 + ( n  1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
 INCY  INTEGER.
 On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Unchanged on exit.
FURTHER DETAILS
Level 2 Blas routine.
 Written on 22October1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.