From ef145621404f97fc38ea3cc89432148563df4e9a Mon Sep 17 00:00:00 2001 From: julie Date: Fri, 16 Jan 2009 22:27:20 +0000 Subject: Fix out of bound access in LIN TESTING with XBLAS found with -fcheck-bounds with gfortran. "Error in DLA_GBAMV.f line 226: forrtl: severe (408): fort: (2): Subscript #1 of the array AB has value 2 which is greater than the upper bound of 1" Reported in http://icl.cs.utk.edu/trac/lapack-dev/ticket/45 --- SRC/sla_gbamv.f | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'SRC/sla_gbamv.f') diff --git a/SRC/sla_gbamv.f b/SRC/sla_gbamv.f index fb8ff49d..22e85bf5 100644 --- a/SRC/sla_gbamv.f +++ b/SRC/sla_gbamv.f @@ -1,7 +1,7 @@ SUBROUTINE SLA_GBAMV( TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, $ INCX, BETA, Y, INCY ) * -* -- LAPACK routine (version 3.2) -- +* -- LAPACK routine (version 3.2.1) -- * -- Contributed by James Demmel, Deaglan Halligan, Yozo Hida and -- * -- Jason Riedy of Univ. of California Berkeley. -- * -- November 2008 -- @@ -22,7 +22,7 @@ * Purpose * ======= * -* SLA_GEAMV performs one of the matrix-vector operations +* SLA_GBAMV performs one of the matrix-vector operations * * y := alpha*abs(A)*abs(x) + beta*abs(y), * or y := alpha*abs(A)'*abs(x) + beta*abs(y), @@ -126,7 +126,7 @@ * .. Local Scalars .. LOGICAL SYMB_ZERO REAL TEMP, SAFE1 - INTEGER I, INFO, IY, J, JX, KX, KY, LENX, LENY, KD + INTEGER I, INFO, IY, J, JX, KX, KY, LENX, LENY, KD, KE * .. * .. External Subroutines .. EXTERNAL XERBLA, SLAMCH @@ -152,9 +152,9 @@ INFO = 2 ELSE IF( N.LT.0 )THEN INFO = 3 - ELSE IF( KL.LT.0 ) THEN + ELSE IF( KL.LT.0 .OR. KL.GT.M-1 ) THEN INFO = 4 - ELSE IF( KU.LT.0 ) THEN + ELSE IF( KU.LT.0 .OR. KU.GT.N-1 ) THEN INFO = 5 ELSE IF( LDAB.LT.KL+KU+1 )THEN INFO = 6 @@ -208,6 +208,7 @@ * to per-column. * KD = KU + 1 + KE = KL + 1 IY = KY IF ( INCX.EQ.1 ) THEN DO I = 1, LENY @@ -221,11 +222,12 @@ Y( IY ) = BETA * ABS( Y( IY ) ) END IF IF ( ALPHA .NE. ZERO ) THEN - DO J = MAX( I-KU, 1 ), MIN( I+KL, LENX ) + DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX ) IF( TRANS.EQ.ILATRANS( 'N' ) )THEN + TEMP = ABS( AB( KD+I-J, J ) ) ELSE - TEMP = ABS( AB( J, KD+I-J ) ) + TEMP = ABS( AB( KE-I+J, I ) ) END IF SYMB_ZERO = SYMB_ZERO .AND. @@ -252,12 +254,12 @@ END IF IF ( ALPHA .NE. ZERO ) THEN JX = KX - DO J = MAX( I-KU, 1 ), MIN( I+KL, LENX ) + DO J = MAX( I-KL, 1 ), MIN( I+KU, LENX ) IF( TRANS.EQ.ILATRANS( 'N' ) )THEN TEMP = ABS( AB( KD+I-J, J ) ) ELSE - TEMP = ABS( AB( J, KD+I-J ) ) + TEMP = ABS( AB( KE-I+J, I ) ) END IF SYMB_ZERO = SYMB_ZERO .AND. -- cgit v1.2.3