Contents
zhbmv - perform the matrix-vector operation y := alpha*A*x
+ beta*y
SUBROUTINE ZHBMV(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y,
INCY)
CHARACTER * 1 UPLO
DOUBLE COMPLEX ALPHA, BETA
DOUBLE COMPLEX A(LDA,*), X(*), Y(*)
INTEGER N, K, LDA, INCX, INCY
SUBROUTINE ZHBMV_64(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y,
INCY)
CHARACTER * 1 UPLO
DOUBLE COMPLEX ALPHA, BETA
DOUBLE COMPLEX A(LDA,*), X(*), Y(*)
INTEGER*8 N, K, LDA, INCX, INCY
F95 INTERFACE
SUBROUTINE HBMV(UPLO, [N], K, ALPHA, A, [LDA], X, [INCX], BETA,
Y, [INCY])
CHARACTER(LEN=1) :: UPLO
COMPLEX(8) :: ALPHA, BETA
COMPLEX(8), DIMENSION(:) :: X, Y
COMPLEX(8), DIMENSION(:,:) :: A
INTEGER :: N, K, LDA, INCX, INCY
SUBROUTINE HBMV_64(UPLO, [N], K, ALPHA, A, [LDA], X, [INCX],
BETA, Y, [INCY])
CHARACTER(LEN=1) :: UPLO
COMPLEX(8) :: ALPHA, BETA
COMPLEX(8), DIMENSION(:) :: X, Y
COMPLEX(8), DIMENSION(:,:) :: A
INTEGER(8) :: N, K, LDA, INCX, INCY
C INTERFACE
#include <sunperf.h>
void zhbmv(char uplo, int n, int k, doublecomplex *alpha,
doublecomplex *a, int lda, doublecomplex *x, int
incx, doublecomplex *beta, doublecomplex *y, int
incy);
void zhbmv_64(char uplo, long n, long k, doublecomplex
*alpha, doublecomplex *a, long lda, doublecomplex
*x, long incx, doublecomplex *beta, doublecomplex
*y, long incy);
zhbmv performs the matrix-vector operation y := alpha*A*x +
beta*y where alpha and beta are scalars, x and y are n ele-
ment vectors and A is an n by n hermitian band matrix, with
k super-diagonals.
UPLO (input)
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 (input)
On entry, N specifies the order of the matrix A.
N >= 0. Unchanged on exit.
K (input)
On entry, K specifies the number of super-
diagonals of the matrix A. K must satisfy 0 .le.
K. Unchanged on exit.
ALPHA (input)
On entry, ALPHA specifies the scalar alpha.
Unchanged on exit.
A (input)
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 lead-
ing 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 lead-
ing 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 ele-
ments need not be set and are assumed to be zero.
Unchanged on exit.
LDA (input)
On entry, LDA specifies the first dimension of A
as declared in the calling (sub) program. LDA >= (
k + 1 ). Unchanged on exit.
X (input)
( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the
incremented array X must contain the vector x.
Unchanged on exit.
INCX (input)
On entry, INCX specifies the increment for the
elements of X. INCX must not be zero. Unchanged
on exit.
BETA (input)
On entry, BETA specifies the scalar beta.
Unchanged on exit.
Y (input/output)
( 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 (input)
On entry, INCY specifies the increment for the
elements of Y. INCY must not be zero. Unchanged
on exit.