subroutine zgbmv ( trans, m, n, kl, ku, alpha, a, lda, x, incx, $ beta, y, incy ) * .. scalar arguments .. complex*16 alpha, beta integer incx, incy, kl, ku, lda, m, n character*1 trans * .. array arguments .. complex*16 a( lda, * ), x( * ), y( * ) * .. * * purpose * ======= * * zgbmv performs one of the matrix-vector operations * * y := alpha*a*x + beta*y, or y := alpha*a'*x + beta*y, or * * y := alpha*conjg( a' )*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and a is an * m by n band matrix, with kl sub-diagonals and ku super-diagonals. * * parameters * ========== * * trans - character*1. * on entry, trans specifies the operation to be performed as * follows: * * trans = 'n' or 'n' y := alpha*a*x + beta*y. * * trans = 't' or 't' y := alpha*a'*x + beta*y. * * trans = 'c' or 'c' y := alpha*conjg( a' )*x + beta*y. * * unchanged on exit. * * m - integer. * on entry, m specifies the number of rows of the matrix a. * m must be at least zero. * unchanged on exit. * * n - integer. * on entry, n specifies the number of columns of the matrix a. * n must be at least zero. * unchanged on exit. * * kl - integer. * on entry, kl specifies the number of sub-diagonals of the * matrix a. kl must satisfy 0 .le. kl. * unchanged on exit. * * ku - integer. * on entry, ku specifies the number of super-diagonals of the * matrix a. ku must satisfy 0 .le. ku. * 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, the leading ( kl + ku + 1 ) by n part of the * array a must contain the matrix of coefficients, supplied * column by column, with the leading diagonal of the matrix in * row ( ku + 1 ) of the array, the first super-diagonal * starting at position 2 in row ku, the first sub-diagonal * starting at position 1 in row ( ku + 2 ), and so on. * elements in the array a that do not correspond to elements * in the band matrix (such as the top left ku by ku triangle) * are not referenced. * the following program segment will transfer a band matrix * from conventional full matrix storage to band storage: * * do 20, j = 1, n * k = ku + 1 - j * do 10, i = max( 1, j - ku ), min( m, j + kl ) * a( k + i, j ) = matrix( i, j ) * 10 continue * 20 continue * * 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 * ( kl + ku + 1 ). * unchanged on exit. * * x - complex*16 array of dimension at least * ( 1 + ( n - 1 )*abs( incx ) ) when trans = 'n' or 'n' * and at least * ( 1 + ( m - 1 )*abs( incx ) ) otherwise. * 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. when beta is * supplied as zero then y need not be set on input. * unchanged on exit. * * y - complex*16 array of dimension at least * ( 1 + ( m - 1 )*abs( incy ) ) when trans = 'n' or 'n' * and at least * ( 1 + ( n - 1 )*abs( incy ) ) otherwise. * 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. *