ssbmv - perform the matrix-vector operation y := alpha*A*x + beta*y
SUBROUTINE SSBMV( UPLO, N, NDIAG, ALPHA, A, LDA, X, INCX, BETA, Y, * INCY) CHARACTER * 1 UPLO INTEGER N, NDIAG, LDA, INCX, INCY REAL ALPHA, BETA REAL A(LDA,*), X(*), Y(*)
SUBROUTINE SSBMV_64( UPLO, N, NDIAG, ALPHA, A, LDA, X, INCX, BETA, * Y, INCY) CHARACTER * 1 UPLO INTEGER*8 N, NDIAG, LDA, INCX, INCY REAL ALPHA, BETA REAL 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 :: ALPHA, BETA REAL, DIMENSION(:) :: X, Y REAL, 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 :: ALPHA, BETA REAL, DIMENSION(:) :: X, Y REAL, DIMENSION(:,:) :: A
#include <sunperf.h>
void ssbmv(char uplo, int n, int ndiag, float alpha, float *a, int lda, float *x, int incx, float beta, float *y, int incy);
void ssbmv_64(char uplo, long n, long ndiag, float alpha, float *a, long lda, float *x, long incx, float beta, float *y, long incy);
ssbmv 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.