184 SUBROUTINE cla_gbamv( TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X,
185 $ INCX, BETA, Y, INCY )
193 INTEGER INCX, INCY, LDAB, M, N, KL, KU, TRANS
196 COMPLEX AB( LDAB, * ), X( * )
204 parameter( one = 1.0e+0, zero = 0.0e+0 )
209 INTEGER I, INFO, IY, J, JX, KX, KY, LENX, LENY, KD, KE
221 INTRINSIC max, abs, real, aimag, sign
227 cabs1( cdum ) = abs( real( cdum ) ) + abs( aimag( cdum ) )
234 IF ( .NOT.( ( trans.EQ.ilatrans(
'N' ) )
235 $ .OR. ( trans.EQ.ilatrans( 't
' ) )
236.OR..EQ.
$ ( TRANSILATRANS( 'c
' ) ) ) ) THEN
238.LT.
ELSE IF( M0 )THEN
240.LT.
ELSE IF( N0 )THEN
242.LT..OR..GT.
ELSE IF( KL0 KLM-1 ) THEN
244.LT..OR..GT.
ELSE IF( KU0 KUN-1 ) THEN
246.LT.
ELSE IF( LDABKL+KU+1 )THEN
248.EQ.
ELSE IF( INCX0 )THEN
250.EQ.
ELSE IF( INCY0 )THEN
260.EQ..OR..EQ..OR.
IF( ( M0 )( N0 )
261.EQ..AND..EQ.
$ ( ( ALPHAZERO )( BETAONE ) ) )
267.EQ.
IF( TRANSILATRANS( 'n
' ) )THEN
277 KX = 1 - ( LENX - 1 )*INCX
282 KY = 1 - ( LENY - 1 )*INCY
288 SAFE1 = SLAMCH( 'safe minimum
' )
300.EQ.
IF ( INCX1 ) THEN
301.EQ.
IF( TRANSILATRANS( 'n
' ) )THEN
303.EQ.
IF ( BETA 0.0 ) THEN
306.EQ.
ELSE IF ( Y( IY ) 0.0 ) THEN
310 Y( IY ) = BETA * ABS( Y( IY ) )
312.NE.
IF ( ALPHA 0.0 ) THEN
313 DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX )
314 TEMP = CABS1( AB( KD+I-J, J ) )
315.AND.
SYMB_ZERO = SYMB_ZERO
316.EQ..OR..EQ.
$ ( X( J ) ZERO TEMP ZERO )
318 Y( IY ) = Y( IY ) + ALPHA*CABS1( X( J ) )*TEMP
323 $ Y( IY ) = Y( IY ) + SIGN( SAFE1, Y( IY ) )
329.EQ.
IF ( BETA 0.0 ) THEN
332.EQ.
ELSE IF ( Y( IY ) 0.0 ) THEN
336 Y( IY ) = BETA * ABS( Y( IY ) )
338.NE.
IF ( ALPHA 0.0 ) THEN
339 DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX )
340 TEMP = CABS1( AB( KE-I+J, I ) )
341.AND.
SYMB_ZERO = SYMB_ZERO
342.EQ..OR..EQ.
$ ( X( J ) ZERO TEMP ZERO )
344 Y( IY ) = Y( IY ) + ALPHA*CABS1( X( J ) )*TEMP
349 $ Y( IY ) = Y( IY ) + SIGN( SAFE1, Y( IY ) )
355.EQ.
IF( TRANSILATRANS( 'n
' ) )THEN
357.EQ.
IF ( BETA 0.0 ) THEN
360.EQ.
ELSE IF ( Y( IY ) 0.0 ) THEN
364 Y( IY ) = BETA * ABS( Y( IY ) )
366.NE.
IF ( ALPHA 0.0 ) THEN
368 DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX )
369 TEMP = CABS1( AB( KD+I-J, J ) )
370.AND.
SYMB_ZERO = SYMB_ZERO
371.EQ..OR..EQ.
$ ( X( JX ) ZERO TEMP ZERO )
373 Y( IY ) = Y( IY ) + ALPHA*CABS1( X( JX ) )*TEMP
378.NOT.
IF ( SYMB_ZERO )
379 $ Y( IY ) = Y( IY ) + SIGN( SAFE1, Y( IY ) )
385.EQ.
IF ( BETA 0.0 ) THEN
388.EQ.
ELSE IF ( Y( IY ) 0.0 ) THEN
392 Y( IY ) = BETA * ABS( Y( IY ) )
394.NE.
IF ( ALPHA 0.0 ) THEN
396 DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX )
397 TEMP = CABS1( AB( KE-I+J, I ) )
398.AND.
SYMB_ZERO = SYMB_ZERO
399.EQ..OR..EQ.
$ ( X( JX ) ZERO TEMP ZERO )
401 Y( IY ) = Y( IY ) + ALPHA*CABS1( X( JX ) )*TEMP
406.NOT.
IF ( SYMB_ZERO )
407 $ Y( IY ) = Y( IY ) + SIGN( SAFE1, Y( IY ) )
subroutine cla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, beta, y, incy)
CLA_GBAMV performs a matrix-vector operation to calculate error bounds.