1 SUBROUTINE zsbmv( UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y,
10 INTEGER incx, incy, k, lda, n
11 COMPLEX*16 alpha, beta
14 COMPLEX*16 a( lda, * ), x( * ), y( * )
131 parameter( one = ( 1.0d+0, 0.0d+0 ) )
133 parameter( zero = ( 0.0d+0, 0.0d+0 ) )
136 INTEGER i, info, ix, iy, j, jx, jy, kplus1, kx, ky, l
137 COMPLEX*16 temp1, temp2
154 IF( .NOT.lsame(
uplo,
'U' ) .AND. .NOT.lsame(
uplo,
'L' ) )
THEN
156 ELSE IF( n.LT.0 )
THEN
158 ELSE IF( k.LT.0 )
THEN
160 ELSE IF( lda.LT.( k+1 ) )
THEN
162 ELSE IF( incx.EQ.0 )
THEN
164 ELSE IF( incy.EQ.0 )
THEN
168 CALL
xerbla(
'ZSBMV ', info )
174 IF( ( n.EQ.0 ) .OR. ( ( alpha.EQ.zero ) .AND. ( beta.EQ.one ) ) )
182 kx = 1 - ( n-1 )*incx
187 ky = 1 - ( n-1 )*incy
195 IF( beta.NE.one )
THEN
197 IF( beta.EQ.zero )
THEN
208 IF( beta.EQ.zero )
THEN
215 y( iy ) = beta*y( iy )
223 IF( lsame(
uplo,
'U' ) )
THEN
228 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
233 DO 50 i =
max( 1, j-k ), j - 1
234 y( i ) = y( i ) + temp1*a( l+i, j )
235 temp2 = temp2 + a( l+i, j )*x( i )
237 y( j ) = y( j ) + temp1*a( kplus1, j ) + alpha*temp2
243 temp1 = alpha*x( jx )
248 DO 70 i =
max( 1, j-k ), j - 1
249 y( iy ) = y( iy ) + temp1*a( l+i, j )
250 temp2 = temp2 + a( l+i, j )*x( ix )
254 y( jy ) = y( jy ) + temp1*a( kplus1, j ) + alpha*temp2
267 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
271 y( j ) = y( j ) + temp1*a( 1, j )
273 DO 90 i = j + 1,
min( n, j+k )
274 y( i ) = y( i ) + temp1*a( l+i, j )
275 temp2 = temp2 + a( l+i, j )*x( i )
277 y( j ) = y( j ) + alpha*temp2
283 temp1 = alpha*x( jx )
285 y( jy ) = y( jy ) + temp1*a( 1, j )
289 DO 110 i = j + 1,
min( n, j+k )
292 y( iy ) = y( iy ) + temp1*a( l+i, j )
293 temp2 = temp2 + a( l+i, j )*x( ix )
295 y( jy ) = y( jy ) + alpha*temp2