[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]

*AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 2*

## SSBMV or DSBMV Subroutine

### Purpose

Performs matrix-vector operations using symmetric band matrix.

### Library

BLAS Library (**libblas.a**)

### FORTRAN Syntax

**SUBROUTINE SSBMV(***UPLO***, ***N***, ***K***, ***ALPHA***, ***A***, ***LDA***,**
*X***, ***INCX***, ***BETA***, ***Y***, ***INCY***)**
**REAL** *ALPHA***,***BETA*
**INTEGER** *INCX***,***INCY***,***K***,***LDA***,***N*
**CHARACTER*1** *UPLO*
**REAL** *A***(***LDA***,*), ***X***(*), ***Y***(*)**

**SUBROUTINE DSBMV(***UPLO***, ***N***, ***K***, ***ALPHA***, ***A***, ***LDA***,**
*X***, ***INCX***, ***BETA***, ***Y***, ***INCY***)**
**DOUBLE PRECISION** *ALPHA***,***BETA*
**INTEGER** *INCX***,***INCY***,***K***,***LDA***,***N*
**CHARACTER*1** *UPLO*
**DOUBLE PRECISION** *A***(***LDA***,*), ***X***(*), ***Y***(*)**

### Description

The **SSBMV** or **DSBMV** subroutine 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 *K* super-diagonals.

### Parameters

*UPLO* |
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* |
On entry, *N* specifies the order of the matrix* A*; *N *must be at least 0; unchanged on exit. |

*K* |
On entry,* K* specifies the number of superdiagonals of the matrix *A*; *K* must satisfy 0 .le. *K*; unchanged on exit. |

*ALPHA* |
On entry, *ALPHA* specifies the scalar alpha; unchanged on exit. |

*A* |
An array of dimension (* LDA*, *N* ); on 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 symmetric matrix, supplied column by column, with the leading diagonal of the matrix in row ( *K* + 1 ) of the array, the first superdiagonal 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 transfers the upper triangular part of a symmetric 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
On 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 symmetric matrix, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first subdiagonal 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 transfers 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 + K )
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Unchanged on exit. |

*LDA* |
On entry, *LDA *specifies the first dimension of *A* as declared in the calling (sub) program; *LDA* must be at least ( *K* + 1 ); unchanged on exit. |

*X* |
A vector of dimension at least (1 + (*N*-1) * abs( *INCX* ) ); on entry, the incremented array *X* must contain the vector x; unchanged on exit. |

*INCX* |
On entry, *INCX* specifies the increment for the elements of *X*; *INCX* must not be 0; unchanged on exit. |

*BETA* |
On entry, *BETA* specifies the scalar beta; unchanged on exit. |

*Y* |
A vector of dimension at least (1 + (*N*-1) * abs( *INCY* ) ); on entry, the incremented array* Y* must contain the vector y; on exit, *Y* is overwritten by the updated vector y. |

*INCY* |
On entry, *INCY* specifies the increment for the elements of *Y*; *INCY* must not be 0; unchanged on exit. |

[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]