Skip to content

Commit 25274df

Browse files
Merge pull request #622 from matcross/master
Regression test for illegal modification of Y in xGEMV.
2 parents 32b062a + 6c876d4 commit 25274df

File tree

4 files changed

+248
-4
lines changed

4 files changed

+248
-4
lines changed

BLAS/TESTING/cblat2.f

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ SUBROUTINE CCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
479479
LOGICAL LCE, LCERES
480480
EXTERNAL LCE, LCERES
481481
* .. External Subroutines ..
482-
EXTERNAL CGBMV, CGEMV, CMAKE, CMVCH
482+
EXTERNAL CGBMV, CGEMV, CMAKE, CMVCH, CREGR1
483483
* .. Intrinsic Functions ..
484484
INTRINSIC ABS, MAX, MIN
485485
* .. Scalars in Common ..
@@ -734,6 +734,34 @@ SUBROUTINE CCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
734734
*
735735
120 CONTINUE
736736
*
737+
* Regression test to verify preservation of y when m zero, n nonzero.
738+
*
739+
CALL CREGR1( TRANS, M, N, LY, KL, KU, ALPHA, AA, LDA, XX, INCX,
740+
$ BETA, YY, INCY, YS )
741+
IF( FULL )THEN
742+
IF( TRACE )
743+
$ WRITE( NTRA, FMT = 9994 )NC, SNAME, TRANS, M, N, ALPHA, LDA,
744+
$ INCX, BETA, INCY
745+
IF( REWI )
746+
$ REWIND NTRA
747+
CALL CGEMV( TRANS, M, N, ALPHA, AA, LDA, XX, INCX, BETA, YY,
748+
$ INCY )
749+
ELSE IF( BANDED )THEN
750+
IF( TRACE )
751+
$ WRITE( NTRA, FMT = 9995 )NC, SNAME, TRANS, M, N, KL, KU,
752+
$ ALPHA, LDA, INCX, BETA, INCY
753+
IF( REWI )
754+
$ REWIND NTRA
755+
CALL CGBMV( TRANS, M, N, KL, KU, ALPHA, AA, LDA, XX, INCX,
756+
$ BETA, YY, INCY )
757+
END IF
758+
NC = NC + 1
759+
IF( .NOT.LCE( YS, YY, LY ) )THEN
760+
WRITE( NOUT, FMT = 9998 )NARGS - 1
761+
FATAL = .TRUE.
762+
GO TO 130
763+
END IF
764+
*
737765
* Report result.
738766
*
739767
IF( ERRMAX.LT.THRESH )THEN
@@ -3219,6 +3247,39 @@ SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
32193247
*
32203248
* End of CHKXER
32213249
*
3250+
END
3251+
SUBROUTINE CREGR1( TRANS, M, N, LY, KL, KU, ALPHA, A, LDA, X,
3252+
$ INCX, BETA, Y, INCY, YS )
3253+
*
3254+
* Input initialization for regression test.
3255+
*
3256+
* .. Scalar Arguments ..
3257+
CHARACTER*1 TRANS
3258+
INTEGER LY, M, N, KL, KU, LDA, INCX, INCY
3259+
COMPLEX ALPHA, BETA
3260+
* .. Array Arguments ..
3261+
COMPLEX A(LDA,*), X(*), Y(*), YS(*)
3262+
* .. Local Scalars ..
3263+
INTEGER I
3264+
* .. Intrinsic Functions ..
3265+
INTRINSIC CMPLX, REAL
3266+
* .. Executable Statements ..
3267+
TRANS = 'T'
3268+
M = 0
3269+
N = 5
3270+
KL = 0
3271+
KU = 0
3272+
ALPHA = CMPLX( 1.0 )
3273+
LDA = MAX( 1, M )
3274+
INCX = 1
3275+
BETA = CMPLX( -0.7, -0.8 )
3276+
INCY = 1
3277+
LY = ABS( INCY )*N
3278+
DO 10 I = 1, LY
3279+
Y( I ) = CMPLX( 42.0, REAL( I ) )
3280+
YS( I ) = Y( I )
3281+
10 CONTINUE
3282+
RETURN
32223283
END
32233284
SUBROUTINE XERBLA( SRNAME, INFO )
32243285
*

BLAS/TESTING/dblat2.f

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ SUBROUTINE DCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
469469
LOGICAL LDE, LDERES
470470
EXTERNAL LDE, LDERES
471471
* .. External Subroutines ..
472-
EXTERNAL DGBMV, DGEMV, DMAKE, DMVCH
472+
EXTERNAL DGBMV, DGEMV, DMAKE, DMVCH, DREGR1
473473
* .. Intrinsic Functions ..
474474
INTRINSIC ABS, MAX, MIN
475475
* .. Scalars in Common ..
@@ -724,6 +724,34 @@ SUBROUTINE DCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
724724
*
725725
120 CONTINUE
726726
*
727+
* Regression test to verify preservation of y when m zero, n nonzero.
728+
*
729+
CALL DREGR1( TRANS, M, N, LY, KL, KU, ALPHA, AA, LDA, XX, INCX,
730+
$ BETA, YY, INCY, YS )
731+
IF( FULL )THEN
732+
IF( TRACE )
733+
$ WRITE( NTRA, FMT = 9994 )NC, SNAME, TRANS, M, N, ALPHA, LDA,
734+
$ INCX, BETA, INCY
735+
IF( REWI )
736+
$ REWIND NTRA
737+
CALL DGEMV( TRANS, M, N, ALPHA, AA, LDA, XX, INCX, BETA, YY,
738+
$ INCY )
739+
ELSE IF( BANDED )THEN
740+
IF( TRACE )
741+
$ WRITE( NTRA, FMT = 9995 )NC, SNAME, TRANS, M, N, KL, KU,
742+
$ ALPHA, LDA, INCX, BETA, INCY
743+
IF( REWI )
744+
$ REWIND NTRA
745+
CALL DGBMV( TRANS, M, N, KL, KU, ALPHA, AA, LDA, XX, INCX,
746+
$ BETA, YY, INCY )
747+
END IF
748+
NC = NC + 1
749+
IF( .NOT.LDE( YS, YY, LY ) )THEN
750+
WRITE( NOUT, FMT = 9998 )NARGS - 1
751+
FATAL = .TRUE.
752+
GO TO 130
753+
END IF
754+
*
727755
* Report result.
728756
*
729757
IF( ERRMAX.LT.THRESH )THEN
@@ -3116,6 +3144,39 @@ SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
31163144
*
31173145
* End of CHKXER
31183146
*
3147+
END
3148+
SUBROUTINE DREGR1( TRANS, M, N, LY, KL, KU, ALPHA, A, LDA, X,
3149+
$ INCX, BETA, Y, INCY, YS )
3150+
*
3151+
* Input initialization for regression test.
3152+
*
3153+
* .. Scalar Arguments ..
3154+
CHARACTER*1 TRANS
3155+
INTEGER LY, M, N, KL, KU, LDA, INCX, INCY
3156+
DOUBLE PRECISION ALPHA, BETA
3157+
* .. Array Arguments ..
3158+
DOUBLE PRECISION A(LDA,*), X(*), Y(*), YS(*)
3159+
* .. Local Scalars ..
3160+
INTEGER I
3161+
* .. Intrinsic Functions ..
3162+
INTRINSIC DBLE
3163+
* .. Executable Statements ..
3164+
TRANS = 'T'
3165+
M = 0
3166+
N = 5
3167+
KL = 0
3168+
KU = 0
3169+
ALPHA = 1.0D0
3170+
LDA = MAX( 1, M )
3171+
INCX = 1
3172+
BETA = -0.7D0
3173+
INCY = 1
3174+
LY = ABS( INCY )*N
3175+
DO 10 I = 1, LY
3176+
Y( I ) = 42.0D0 + DBLE( I )
3177+
YS( I ) = Y( I )
3178+
10 CONTINUE
3179+
RETURN
31193180
END
31203181
SUBROUTINE XERBLA( SRNAME, INFO )
31213182
*

BLAS/TESTING/sblat2.f

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ SUBROUTINE SCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
469469
LOGICAL LSE, LSERES
470470
EXTERNAL LSE, LSERES
471471
* .. External Subroutines ..
472-
EXTERNAL SGBMV, SGEMV, SMAKE, SMVCH
472+
EXTERNAL SGBMV, SGEMV, SMAKE, SMVCH, SREGR1
473473
* .. Intrinsic Functions ..
474474
INTRINSIC ABS, MAX, MIN
475475
* .. Scalars in Common ..
@@ -724,6 +724,34 @@ SUBROUTINE SCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
724724
*
725725
120 CONTINUE
726726
*
727+
* Regression test to verify preservation of y when m zero, n nonzero.
728+
*
729+
CALL SREGR1( TRANS, M, N, LY, KL, KU, ALPHA, AA, LDA, XX, INCX,
730+
$ BETA, YY, INCY, YS )
731+
IF( FULL )THEN
732+
IF( TRACE )
733+
$ WRITE( NTRA, FMT = 9994 )NC, SNAME, TRANS, M, N, ALPHA, LDA,
734+
$ INCX, BETA, INCY
735+
IF( REWI )
736+
$ REWIND NTRA
737+
CALL SGEMV( TRANS, M, N, ALPHA, AA, LDA, XX, INCX, BETA, YY,
738+
$ INCY )
739+
ELSE IF( BANDED )THEN
740+
IF( TRACE )
741+
$ WRITE( NTRA, FMT = 9995 )NC, SNAME, TRANS, M, N, KL, KU,
742+
$ ALPHA, LDA, INCX, BETA, INCY
743+
IF( REWI )
744+
$ REWIND NTRA
745+
CALL SGBMV( TRANS, M, N, KL, KU, ALPHA, AA, LDA, XX, INCX,
746+
$ BETA, YY, INCY )
747+
END IF
748+
NC = NC + 1
749+
IF( .NOT.LSE( YS, YY, LY ) )THEN
750+
WRITE( NOUT, FMT = 9998 )NARGS - 1
751+
FATAL = .TRUE.
752+
GO TO 130
753+
END IF
754+
*
727755
* Report result.
728756
*
729757
IF( ERRMAX.LT.THRESH )THEN
@@ -3116,6 +3144,39 @@ SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
31163144
*
31173145
* End of CHKXER
31183146
*
3147+
END
3148+
SUBROUTINE SREGR1( TRANS, M, N, LY, KL, KU, ALPHA, A, LDA, X,
3149+
$ INCX, BETA, Y, INCY, YS )
3150+
*
3151+
* Input initialization for regression test.
3152+
*
3153+
* .. Scalar Arguments ..
3154+
CHARACTER*1 TRANS
3155+
INTEGER LY, M, N, KL, KU, LDA, INCX, INCY
3156+
REAL ALPHA, BETA
3157+
* .. Array Arguments ..
3158+
REAL A(LDA,*), X(*), Y(*), YS(*)
3159+
* .. Local Scalars ..
3160+
INTEGER I
3161+
* .. Intrinsic Functions ..
3162+
INTRINSIC REAL
3163+
* .. Executable Statements ..
3164+
TRANS = 'T'
3165+
M = 0
3166+
N = 5
3167+
KL = 0
3168+
KU = 0
3169+
ALPHA = 1.0
3170+
LDA = MAX( 1, M )
3171+
INCX = 1
3172+
BETA = -0.7
3173+
INCY = 1
3174+
LY = ABS( INCY )*N
3175+
DO 10 I = 1, LY
3176+
Y( I ) = 42.0 + REAL( I )
3177+
YS( I ) = Y( I )
3178+
10 CONTINUE
3179+
RETURN
31193180
END
31203181
SUBROUTINE XERBLA( SRNAME, INFO )
31213182
*

BLAS/TESTING/zblat2.f

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ SUBROUTINE ZCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
481481
LOGICAL LZE, LZERES
482482
EXTERNAL LZE, LZERES
483483
* .. External Subroutines ..
484-
EXTERNAL ZGBMV, ZGEMV, ZMAKE, ZMVCH
484+
EXTERNAL ZGBMV, ZGEMV, ZMAKE, ZMVCH, ZREGR1
485485
* .. Intrinsic Functions ..
486486
INTRINSIC ABS, MAX, MIN
487487
* .. Scalars in Common ..
@@ -736,6 +736,34 @@ SUBROUTINE ZCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
736736
*
737737
120 CONTINUE
738738
*
739+
* Regression test to verify preservation of y when m zero, n nonzero.
740+
*
741+
CALL ZREGR1( TRANS, M, N, LY, KL, KU, ALPHA, AA, LDA, XX, INCX,
742+
$ BETA, YY, INCY, YS )
743+
IF( FULL )THEN
744+
IF( TRACE )
745+
$ WRITE( NTRA, FMT = 9994 )NC, SNAME, TRANS, M, N, ALPHA, LDA,
746+
$ INCX, BETA, INCY
747+
IF( REWI )
748+
$ REWIND NTRA
749+
CALL ZGEMV( TRANS, M, N, ALPHA, AA, LDA, XX, INCX, BETA, YY,
750+
$ INCY )
751+
ELSE IF( BANDED )THEN
752+
IF( TRACE )
753+
$ WRITE( NTRA, FMT = 9995 )NC, SNAME, TRANS, M, N, KL, KU,
754+
$ ALPHA, LDA, INCX, BETA, INCY
755+
IF( REWI )
756+
$ REWIND NTRA
757+
CALL ZGBMV( TRANS, M, N, KL, KU, ALPHA, AA, LDA, XX, INCX,
758+
$ BETA, YY, INCY )
759+
END IF
760+
NC = NC + 1
761+
IF( .NOT.LZE( YS, YY, LY ) )THEN
762+
WRITE( NOUT, FMT = 9998 )NARGS - 1
763+
FATAL = .TRUE.
764+
GO TO 130
765+
END IF
766+
*
739767
* Report result.
740768
*
741769
IF( ERRMAX.LT.THRESH )THEN
@@ -3227,6 +3255,39 @@ SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
32273255
*
32283256
* End of CHKXER
32293257
*
3258+
END
3259+
SUBROUTINE ZREGR1( TRANS, M, N, LY, KL, KU, ALPHA, A, LDA, X,
3260+
$ INCX, BETA, Y, INCY, YS )
3261+
*
3262+
* Input initialization for regression test.
3263+
*
3264+
* .. Scalar Arguments ..
3265+
CHARACTER*1 TRANS
3266+
INTEGER LY, M, N, KL, KU, LDA, INCX, INCY
3267+
COMPLEX*16 ALPHA, BETA
3268+
* .. Array Arguments ..
3269+
COMPLEX*16 A(LDA,*), X(*), Y(*), YS(*)
3270+
* .. Local Scalars ..
3271+
INTEGER I
3272+
* .. Intrinsic Functions ..
3273+
INTRINSIC DBLE, DCMPLX
3274+
* .. Executable Statements ..
3275+
TRANS = 'T'
3276+
M = 0
3277+
N = 5
3278+
KL = 0
3279+
KU = 0
3280+
ALPHA = DCMPLX( 1.0D0 )
3281+
LDA = MAX( 1, M )
3282+
INCX = 1
3283+
BETA = DCMPLX( -0.7D0, -0.8D0 )
3284+
INCY = 1
3285+
LY = ABS( INCY )*N
3286+
DO 10 I = 1, LY
3287+
Y( I ) = DCMPLX( 42.0D0, DBLE( I ) )
3288+
YS( I ) = Y( I )
3289+
10 CONTINUE
3290+
RETURN
32303291
END
32313292
SUBROUTINE XERBLA( SRNAME, INFO )
32323293
*

0 commit comments

Comments
 (0)