"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
SUBROUTINE CLA_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 --
* 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),
* .. 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
COMPLEX CDUM
* ..
* .. External Subroutines ..
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
* to per-column.
*
KD = KU + 1
+ KE = KL + 1
IY = KY
IF ( INCX.EQ.1 ) THEN
DO I = 1, LENY
Y( IY ) = BETA * ABS( Y( IY ) )
END IF
IF ( ALPHA .NE. 0.0 ) 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 = CABS1( AB( KD+I-J, J ) )
ELSE
- TEMP = CABS1( AB( J, KD+I-J ) )
+ TEMP = CABS1( AB( KE-I+J, I ) )
END IF
SYMB_ZERO = SYMB_ZERO .AND.
END IF
IF ( ALPHA .NE. 0.0 ) 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 = CABS1( AB( KD+I-J, J ) )
ELSE
- TEMP = CABS1( AB( J, KD+I-J ) )
+ TEMP = CABS1( AB( KE-I+J, I ) )
END IF
SYMB_ZERO = SYMB_ZERO .AND.
$ LDAFB, IPIV, C, CAPPLY, INFO, WORK,
$ RWORK )
*
-* -- 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 --
* .. Scalar Arguments ..
CHARACTER TRANS
LOGICAL CAPPLY
- INTEGER N, KL, KU, KD, LDAB, LDAFB, INFO
+ INTEGER N, KL, KU, KD, KE, LDAB, LDAFB, INFO
* ..
* .. Array Arguments ..
INTEGER IPIV( * )
$ LSAME( TRANS, 'C' ) ) THEN
ELSE IF( N.LT.0 ) THEN
INFO = -2
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-1 ) THEN
+ INFO = -4
+ ELSE IF( KU.LT.0 .OR. KU.GT.N-1 ) THEN
+ INFO = -5
+ ELSE IF( LDAB.LT.KL+KU+1 ) THEN
+ INFO = -8
+ ELSE IF( LDAFB.LT.2*KL+KU+1 ) THEN
+ INFO = -10
END IF
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'CLA_GBRCOND_C', -INFO )
*
ANORM = 0.0E+0
KD = KU + 1
+ KE = KL + 1
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0E+0
IF ( CAPPLY ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1(AB( KD+I-J, J ) ) / C( J )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J ) ) / C( J )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( KD+I-J, J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J ) )
END DO
END IF
RWORK( 2*N+I ) = TMP
DO I = 1, N
TMP = 0.0E+0
IF ( CAPPLY ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) ) / C( J )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) ) / C( J )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) )
END DO
END IF
RWORK( 2*N+I ) = TMP
REAL FUNCTION CLA_GBRCOND_X( TRANS, N, KL, KU, AB, LDAB, AFB,
$ LDAFB, IPIV, X, INFO, WORK, RWORK )
*
-* -- 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 --
* ..
* .. Scalar Arguments ..
CHARACTER TRANS
- INTEGER N, KL, KU, KD, LDAB, LDAFB, INFO
+ INTEGER N, KL, KU, KD, KE, LDAB, LDAFB, INFO
* ..
* .. Array Arguments ..
INTEGER IPIV( * )
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-1 ) THEN
+ INFO = -4
+ ELSE IF( KU.LT.0 .OR. KU.GT.N-1 ) THEN
+ INFO = -5
+ ELSE IF( LDAB.LT.KL+KU+1 ) THEN
+ INFO = -8
+ ELSE IF( LDAFB.LT.2*KL+KU+1 ) THEN
+ INFO = -10
END IF
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'CLA_GBRCOND_X', -INFO )
* Compute norm of op(A)*op2(C).
*
KD = KU + 1
+ KE = KL + 1
ANORM = 0.0
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0E+0
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU ) .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( KD+I-J, J) * X( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J) * X( J ) )
END DO
RWORK( 2*N+I ) = TMP
ANORM = MAX( ANORM, TMP )
ELSE
DO I = 1, N
TMP = 0.0E+0
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU ) .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) * X( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) * X( J ) )
END DO
RWORK( 2*N+I ) = TMP
ANORM = MAX( ANORM, TMP )
SUBROUTINE DLA_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 --
* Purpose
* =======
*
-* DLA_GEAMV performs one of the matrix-vector operations
+* DLA_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),
* .. Local Scalars ..
LOGICAL SYMB_ZERO
DOUBLE PRECISION 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, DLAMCH
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
* to per-column.
*
KD = KU + 1
+ KE = KL + 1
IY = KY
IF ( INCX.EQ.1 ) THEN
DO I = 1, LENY
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.
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.
DOUBLE PRECISION FUNCTION DLA_GBRCOND( TRANS, N, KL, KU, AB, LDAB,
- $ AFB, LDAFB, IPIV, CMODE, C, INFO,
+ $ AFB, LDAFB, IPIV, CMODE, C, INFO,
$ WORK, IWORK )
*
-* -- 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 --
*
* .. Local Scalars ..
LOGICAL NOTRANS
- INTEGER KASE, I, J, KD
+ INTEGER KASE, I, J, KD, KE
DOUBLE PRECISION AINVNM, TMP
* ..
* .. Local Arrays ..
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( KL.LT.0 ) THEN
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-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 = -8
* inv(R)*A*C has unit 1-norm.
*
KD = KU + 1
+ KE = KL + 1
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0D+0
IF ( CMODE .EQ. 1 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) * C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) * C( J ) )
END DO
ELSE IF ( CMODE .EQ. 0 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) / C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) / C( J ) )
END DO
END IF
WORK( 2*N+I ) = TMP
DO I = 1, N
TMP = 0.0D+0
IF ( CMODE .EQ. 1 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( J, KD+I-J ) * C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) * C( J ) )
END DO
ELSE IF ( CMODE .EQ. 0 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS(AB(J,KD+I-J))
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( J, KD+I-J ) / C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) / C( J ) )
END DO
END IF
WORK( 2*N+I ) = TMP
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 --
* 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),
* .. 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
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
* to per-column.
*
KD = KU + 1
+ KE = KL + 1
IY = KY
IF ( INCX.EQ.1 ) THEN
DO I = 1, LENY
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.
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.
REAL FUNCTION SLA_GBRCOND( TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB,
$ IPIV, CMODE, C, INFO, WORK, IWORK )
*
-* -- 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 --
*
* .. Local Scalars ..
LOGICAL NOTRANS
- INTEGER KASE, I, J, KD
+ INTEGER KASE, I, J, KD, KE
REAL AINVNM, TMP
* ..
* .. Local Arrays ..
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( KL.LT.0 ) THEN
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-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 = -8
* inv(R)*A*C has unit 1-norm.
*
KD = KU + 1
+ KE = KL + 1
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0
IF ( CMODE .EQ. 1 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) * C( J ) )
- END IF
- END DO
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) * C( J ) )
+ END DO
ELSE IF ( CMODE .EQ. 0 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( KD+I-J, J ) / C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KD+I-J, J ) / C( J ) )
END DO
END IF
WORK( 2*N+I ) = TMP
DO I = 1, N
TMP = 0.0
IF ( CMODE .EQ. 1 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( J, KD+I-J ) * C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) * C( J ) )
END DO
ELSE IF ( CMODE .EQ. 0 ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS(AB(J,KD+I-J))
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + ABS( AB( J, KD+I-J ) / C( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + ABS( AB( KE-I+J, I ) / C( J ) )
END DO
END IF
WORK( 2*N+I ) = TMP
SUBROUTINE ZLA_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 --
* Purpose
* =======
*
-* DLA_GEAMV performs one of the matrix-vector operations
+* DLA_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),
* .. Local Scalars ..
LOGICAL SYMB_ZERO
DOUBLE PRECISION 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
COMPLEX*16 CDUM
* ..
* .. External Subroutines ..
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
* to per-column.
*
KD = KU + 1
+ KE = KL + 1
IY = KY
IF ( INCX.EQ.1 ) THEN
DO I = 1, LENY
Y( IY ) = BETA * ABS( Y( IY ) )
END IF
IF ( ALPHA .NE. 0.0D+0 ) 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 = CABS1( AB( KD+I-J, J ) )
ELSE
- TEMP = CABS1( AB( J, KD+I-J ) )
+ TEMP = CABS1( AB( KE-I+J, I ) )
END IF
SYMB_ZERO = SYMB_ZERO .AND.
END IF
IF ( ALPHA .NE. 0.0D+0 ) 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 = CABS1( AB( KD+I-J, J ) )
ELSE
- TEMP = CABS1( AB( J, KD+I-J ) )
+ TEMP = CABS1( AB( KE-I+J, I ) )
END IF
SYMB_ZERO = SYMB_ZERO .AND.
- DOUBLE PRECISION FUNCTION ZLA_GBRCOND_C( TRANS, N, KL, KU, AB,
- $ LDAB, AFB, LDAFB, IPIV, C, CAPPLY,
+ DOUBLE PRECISION FUNCTION ZLA_GBRCOND_C( TRANS, N, KL, KU, AB,
+ $ LDAB, AFB, LDAFB, IPIV, C, CAPPLY,
$ INFO, WORK, RWORK )
*
-* -- 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 --
* .. Scalar Arguments ..
CHARACTER TRANS
LOGICAL CAPPLY
- INTEGER N, KL, KU, KD, LDAB, LDAFB, INFO
+ INTEGER N, KL, KU, KD, KE, LDAB, LDAFB, INFO
* ..
* .. Array Arguments ..
INTEGER IPIV( * )
$ LSAME( TRANS, 'C' ) ) THEN
ELSE IF( N.LT.0 ) THEN
INFO = -2
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-1 ) THEN
+ INFO = -4
+ ELSE IF( KU.LT.0 .OR. KU.GT.N-1 ) THEN
+ INFO = -5
+ ELSE IF( LDAB.LT.KL+KU+1 ) THEN
+ INFO = -8
+ ELSE IF( LDAFB.LT.2*KL+KU+1 ) THEN
+ INFO = -10
END IF
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'ZLA_GBRCOND_C', -INFO )
*
ANORM = 0.0D+0
KD = KU + 1
+ KE = KL + 1
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0D+0
IF ( CAPPLY ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1(AB( KD+I-J, J ) ) / C( J )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J ) ) / C( J )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( KD+I-J, J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J ) )
END DO
END IF
RWORK( 2*N+I ) = TMP
DO I = 1, N
TMP = 0.0D+0
IF ( CAPPLY ) THEN
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) ) / C( J )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) ) / C( J )
END DO
ELSE
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU )
- $ .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) )
END DO
END IF
RWORK( 2*N+I ) = TMP
- DOUBLE PRECISION FUNCTION ZLA_GBRCOND_X( TRANS, N, KL, KU, AB,
- $ LDAB, AFB, LDAFB, IPIV, X, INFO,
+ DOUBLE PRECISION FUNCTION ZLA_GBRCOND_X( TRANS, N, KL, KU, AB,
+ $ LDAB, AFB, LDAFB, IPIV, X, INFO,
$ WORK, RWORK )
*
-* -- 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 --
* ..
* .. Scalar Arguments ..
CHARACTER TRANS
- INTEGER N, KL, KU, KD, LDAB, LDAFB, INFO
+ INTEGER N, KL, KU, KD, KE, LDAB, LDAFB, INFO
* ..
* .. Array Arguments ..
INTEGER IPIV( * )
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
+ ELSE IF( KL.LT.0 .OR. KL.GT.N-1 ) THEN
+ INFO = -4
+ ELSE IF( KU.LT.0 .OR. KU.GT.N-1 ) THEN
+ INFO = -5
+ ELSE IF( LDAB.LT.KL+KU+1 ) THEN
+ INFO = -8
+ ELSE IF( LDAFB.LT.2*KL+KU+1 ) THEN
+ INFO = -10
END IF
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'ZLA_GBRCOND_X', -INFO )
* Compute norm of op(A)*op2(C).
*
KD = KU + 1
+ KE = KL + 1
ANORM = 0.0D+0
IF ( NOTRANS ) THEN
DO I = 1, N
TMP = 0.0D+0
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU ) .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( KD+I-J, J) * X( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KD+I-J, J) * X( J ) )
END DO
RWORK( 2*N+I ) = TMP
ANORM = MAX( ANORM, TMP )
ELSE
DO I = 1, N
TMP = 0.0D+0
- DO J = 1, N
- IF ( I.GE.MAX( 1, J-KU ) .AND. I.LE.MIN( N, J+KL ) ) THEN
- TMP = TMP + CABS1( AB( J, KD+I-J ) * X( J ) )
- END IF
+ DO J = MAX( I-KL, 1 ), MIN( I+KU, N )
+ TMP = TMP + CABS1( AB( KE-I+J, I ) * X( J ) )
END DO
RWORK( 2*N+I ) = TMP
ANORM = MAX( ANORM, TMP )