178 SUBROUTINE zla_heamv( UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y,
187 DOUBLE PRECISION ALPHA, BETA
188 INTEGER INCX, INCY, LDA, N, UPLO
191 COMPLEX*16 A( lda, * ), X( * )
192 DOUBLE PRECISION Y( * )
198 DOUBLE PRECISION ONE, ZERO
199 parameter ( one = 1.0d+0, zero = 0.0d+0 )
203 DOUBLE PRECISION TEMP, SAFE1
204 INTEGER I, INFO, IY, J, JX, KX, KY
209 DOUBLE PRECISION DLAMCH
216 INTRINSIC max, abs, sign,
REAL, DIMAG
219 DOUBLE PRECISION CABS1
222 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
229 IF ( uplo.NE.ilauplo(
'U' ) .AND.
230 $ uplo.NE.ilauplo(
'L' ) )
THEN
232 ELSE IF( n.LT.0 )
THEN
234 ELSE IF( lda.LT.max( 1, n ) )
THEN
236 ELSE IF( incx.EQ.0 )
THEN
238 ELSE IF( incy.EQ.0 )
THEN
242 CALL xerbla(
'ZHEMV ', info )
248 IF( ( n.EQ.0 ).OR.( ( alpha.EQ.zero ).AND.( beta.EQ.one ) ) )
256 kx = 1 - ( n - 1 )*incx
261 ky = 1 - ( n - 1 )*incy
267 safe1 = dlamch(
'Safe minimum' )
277 IF ( incx.EQ.1 )
THEN
278 IF ( uplo .EQ. ilauplo(
'U' ) )
THEN
280 IF ( beta .EQ. zero )
THEN
283 ELSE IF ( y( iy ) .EQ. zero )
THEN
287 y( iy ) = beta * abs( y( iy ) )
289 IF ( alpha .NE. zero )
THEN
291 temp = cabs1( a( j, i ) )
292 symb_zero = symb_zero .AND.
293 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
295 y( iy ) = y( iy ) + alpha*cabs1( x( j ) )*temp
298 temp = cabs1( a( i, j ) )
299 symb_zero = symb_zero .AND.
300 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
302 y( iy ) = y( iy ) + alpha*cabs1( x( j ) )*temp
307 $ y( iy ) = y( iy ) + sign( safe1, y( iy ) )
313 IF ( beta .EQ. zero )
THEN
316 ELSE IF ( y( iy ) .EQ. zero )
THEN
320 y( iy ) = beta * abs( y( iy ) )
322 IF ( alpha .NE. zero )
THEN
324 temp = cabs1( a( i, j ) )
325 symb_zero = symb_zero .AND.
326 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
328 y( iy ) = y( iy ) + alpha*cabs1( x( j ) )*temp
331 temp = cabs1( a( j, i ) )
332 symb_zero = symb_zero .AND.
333 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
335 y( iy ) = y( iy ) + alpha*cabs1( x( j ) )*temp
340 $ y( iy ) = y( iy ) + sign( safe1, y( iy ) )
346 IF ( uplo .EQ. ilauplo(
'U' ) )
THEN
348 IF ( beta .EQ. zero )
THEN
351 ELSE IF ( y( iy ) .EQ. zero )
THEN
355 y( iy ) = beta * abs( y( iy ) )
358 IF ( alpha .NE. zero )
THEN
360 temp = cabs1( a( j, i ) )
361 symb_zero = symb_zero .AND.
362 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
364 y( iy ) = y( iy ) + alpha*cabs1( x( jx ) )*temp
368 temp = cabs1( a( i, j ) )
369 symb_zero = symb_zero .AND.
370 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
372 y( iy ) = y( iy ) + alpha*cabs1( x( jx ) )*temp
377 IF ( .NOT.symb_zero )
378 $ y( iy ) = y( iy ) + sign( safe1, y( iy ) )
384 IF ( beta .EQ. zero )
THEN
387 ELSE IF ( y( iy ) .EQ. zero )
THEN
391 y( iy ) = beta * abs( y( iy ) )
394 IF ( alpha .NE. zero )
THEN
396 temp = cabs1( a( i, j ) )
397 symb_zero = symb_zero .AND.
398 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
400 y( iy ) = y( iy ) + alpha*cabs1( x( jx ) )*temp
404 temp = cabs1( a( j, i ) )
405 symb_zero = symb_zero .AND.
406 $ ( x( j ) .EQ. zero .OR. temp .EQ. zero )
408 y( iy ) = y( iy ) + alpha*cabs1( x( jx ) )*temp
413 IF ( .NOT.symb_zero )
414 $ y( iy ) = y( iy ) + sign( safe1, y( iy ) )
subroutine zla_heamv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZLA_HEAMV computes a matrix-vector product using a Hermitian indefinite matrix to calculate error bou...
double precision function dlamch(CMACH)
DLAMCH
subroutine xerbla(SRNAME, INFO)
XERBLA
integer function ilauplo(UPLO)
ILAUPLO