subroutine chbmv ( uplo, n, k, alpha, a, lda, x, incx, $ beta, y, incy ) * .. scalar arguments .. complex alpha, beta integer incx, incy, k, lda, n character*1 uplo * .. array arguments .. complex a( lda, * ), x( * ), y( * ) * .. * * purpose * ======= * * chbmv performs the matrix-vector operation * * y := alpha*a*x + beta*y, * * where alpha and beta are scalars, x and y are n element vectors and * a is an n by n hermitian band matrix, with k super-diagonals. * * parameters * ========== * * 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 = 'u' or 'u' the upper triangular part of a is * being supplied. * * uplo = 'l' or 'l' 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 super-diagonals of the * matrix a. k must satisfy 0 .le. k. * unchanged on exit. * * alpha - complex . * on entry, alpha specifies the scalar alpha. * unchanged on exit. * * a - complex array of dimension ( lda, n ). * before entry with uplo = 'u' or 'u', 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 super-diagonal 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 = 'l' or 'l', 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 sub-diagonal 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 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 . * on entry, beta specifies the scalar beta. * unchanged on exit. * * y - complex 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. * * * level 2 blas routine. * * -- written on 22-october-1986. * jack dongarra, argonne national lab. * jeremy du croz, nag central office. * sven hammarling, nag central office. * richard hanson, sandia national labs.