JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasZhbmv(char uplo, int n, int k, cuDoubleComplex alpha, Pointer A, int lda, Pointer x, int incx, cuDoubleComplex beta, Pointer y, int incy)
    {
        cublasZhbmvNative(uplo, n, k, alpha, A, lda, x, incx, beta, y, incy);
        checkResultBLAS();
    }
public static void cublasZhbmv(char uplo, int n, int k, cuDoubleComplex alpha, Pointer A, int lda, Pointer x, int incx, cuDoubleComplex beta, Pointer y, int incy)
    {
        cublasZhbmvNative(uplo, n, k, alpha, A, lda, x, incx, beta, y, incy);
        checkResultBLAS();
    }
<pre>
void
cublasZhbmv (char uplo, int n, int k, cuDoubleComplex alpha, const cuDoubleComplex *A, int lda,
const cuDoubleComplex *x, int incx, cuDoubleComplex beta, cuDoubleComplex *y, int incy)

performs the matrix-vector operation

y := alpha*A*x + beta*y

alpha and beta are double precision complex scalars. x and y are double precision
complex vectors with n elements. A is an n by n hermitian band matrix consisting
of double precision complex elements, with k super-diagonals and the same number
of subdiagonals.

Input
-----
uplo   specifies whether the upper or lower triangular part of the hermitian
band matrix A is being supplied. If uplo == 'U' or 'u', the upper
triangular part is being supplied. If uplo == 'L' or 'l', the lower
triangular part is being supplied.
n      specifies the number of rows and the number of columns of the
hermitian matrix A. n must be at least zero.
k      specifies the number of super-diagonals of matrix A. Since the matrix
is hermitian, this is also the number of sub-diagonals. k must be at
least zero.
alpha  double precision complex scalar multiplier applied to A*x.
A      double precision complex array of dimensions (lda, n). When uplo == 'U' or
'u', the leading (k + 1) x n part of array A must contain the upper
triangular band 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 x k triangle of the array A is not referenced. When
uplo == 'L' or 'l', the leading (k + 1) x 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 x k triangle of the array A is
not referenced. The imaginary parts of the diagonal elements need
not be set, they are assumed to be zero.
lda    leading dimension of A. lda must be at least (k + 1).
x      double precision complex array of length at least (1 + (n - 1) * abs(incx)).
incx   storage spacing between elements of x. incx must not be zero.
beta   double precision complex scalar multiplier applied to vector y. If beta is
zero, y is not read.
y      double precision complex array of length at least (1 + (n - 1) * abs(incy)).
If beta is zero, y is not read.
incy   storage spacing between elements of y. incy must not be zero.

Output
------
y      updated according to alpha*A*x + beta*y

Reference: http://www.netlib.org/blas/zhbmv.f

Error status for this function can be retrieved via cublasGetError().

Error Status
------------
CUBLAS_STATUS_NOT_INITIALIZED  if CUBLAS library has not been initialized
CUBLAS_STATUS_INVALID_VALUE    if k or n < 0, or if incx or incy == 0
CUBLAS_STATUS_ARCH_MISMATCH    if invoked on device without DP support
CUBLAS_STATUS_EXECUTION_FAILED if function failed to launch on GPU
</pre>