dsbmv - perform the matrix-vector operation y := alpha*A*x + beta*y
SUBROUTINE DSBMV( UPLO, N, NDIAG, ALPHA, A, LDA, X, INCX, BETA, Y, * INCY) CHARACTER * 1 UPLO INTEGER N, NDIAG, LDA, INCX, INCY DOUBLE PRECISION ALPHA, BETA DOUBLE PRECISION A(LDA,*), X(*), Y(*)
SUBROUTINE DSBMV_64( UPLO, N, NDIAG, ALPHA, A, LDA, X, INCX, BETA, * Y, INCY) CHARACTER * 1 UPLO INTEGER*8 N, NDIAG, LDA, INCX, INCY DOUBLE PRECISION ALPHA, BETA DOUBLE PRECISION A(LDA,*), X(*), Y(*)
SUBROUTINE SBMV( UPLO, [N], NDIAG, ALPHA, A, [LDA], X, [INCX], BETA, * Y, [INCY]) CHARACTER(LEN=1) :: UPLO INTEGER :: N, NDIAG, LDA, INCX, INCY REAL(8) :: ALPHA, BETA REAL(8), DIMENSION(:) :: X, Y REAL(8), DIMENSION(:,:) :: A
SUBROUTINE SBMV_64( UPLO, [N], NDIAG, ALPHA, A, [LDA], X, [INCX], * BETA, Y, [INCY]) CHARACTER(LEN=1) :: UPLO INTEGER(8) :: N, NDIAG, LDA, INCX, INCY REAL(8) :: ALPHA, BETA REAL(8), DIMENSION(:) :: X, Y REAL(8), DIMENSION(:,:) :: A
#include <sunperf.h>
void dsbmv(char uplo, int n, int ndiag, double alpha, double *a, int lda, double *x, int incx, double beta, double *y, int incy);
void dsbmv_64(char uplo, long n, long ndiag, double alpha, double *a, long lda, double *x, long incx, double beta, double *y, long incy);
dsbmv 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 symmetric band matrix, with ndiag super-diagonals.
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.
DO 20, J = 1, N M = NDIAG + 1 - J DO 10, I = MAX( 1, J - NDIAG ), J A( M + I, J ) = matrix( I, J ) 10 CONTINUE 20 CONTINUE
Before entry with UPLO = 'L' or 'l', the leading ( ndiag + 1 ) by n part of the array A must contain the lower triangular band part of the symmetric 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 ndiag by ndiag triangle of the array A is not referenced. The following program segment will transfer the lower triangular part of a symmetric 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 + NDIAG ) A( M + I, J ) = matrix( I, J ) 10 CONTINUE 20 CONTINUE
Unchanged on exit.