From 611b774a50b0de00c6bd41ad1a42614cb078359c Mon Sep 17 00:00:00 2001 From: igor175 Date: Tue, 27 Dec 2011 05:10:16 +0000 Subject: [PATCH] added a special block diagonal matrix type to tests for COMPLEX symmetric indefinite factorization routines with rook pivoting --- TESTING/LIN/cchkaa.f | 4 +- TESTING/LIN/cchksy.f | 1 + TESTING/LIN/cchksy_rook.f | 163 +++++++++++++++++++++++++--------------------- TESTING/ctest.in | 2 +- 4 files changed, 91 insertions(+), 79 deletions(-) diff --git a/TESTING/LIN/cchkaa.f b/TESTING/LIN/cchkaa.f index 0d6d880..c5b058f 100644 --- a/TESTING/LIN/cchkaa.f +++ b/TESTING/LIN/cchkaa.f @@ -52,7 +52,7 @@ *> CHE 10 List types on next line if 0 < NTYPES < 10 *> CHP 10 List types on next line if 0 < NTYPES < 10 *> CSY 11 List types on next line if 0 < NTYPES < 11 -*> CSR 10 List types on next line if 0 < NTYPES < 10 +*> CSR 11 List types on next line if 0 < NTYPES < 11 *> CSP 11 List types on next line if 0 < NTYPES < 11 *> CTR 18 List types on next line if 0 < NTYPES < 18 *> CTP 18 List types on next line if 0 < NTYPES < 18 @@ -691,7 +691,7 @@ * SR: symmetric indefinite matrices with Rook pivoting, * with rook (bounded Bunch-Kaufman) pivoting algorithm * - NTYPES = 10 + NTYPES = 11 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) * IF( TSTCHK ) THEN diff --git a/TESTING/LIN/cchksy.f b/TESTING/LIN/cchksy.f index a722d38..c3fdb65 100644 --- a/TESTING/LIN/cchksy.f +++ b/TESTING/LIN/cchksy.f @@ -396,6 +396,7 @@ * code for the 2 x 2 blocks. * CALL CLATSY( UPLO, N, A, LDA, ISEED ) +* END IF * * Do for each value of NB in NBVAL diff --git a/TESTING/LIN/cchksy_rook.f b/TESTING/LIN/cchksy_rook.f index d3c2714..ab876e3 100644 --- a/TESTING/LIN/cchksy_rook.f +++ b/TESTING/LIN/cchksy_rook.f @@ -204,7 +204,7 @@ COMPLEX CZERO PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ) ) INTEGER NTYPES - PARAMETER ( NTYPES = 10 ) + PARAMETER ( NTYPES = 11 ) INTEGER NTESTS PARAMETER ( NTESTS = 7 ) * .. @@ -231,8 +231,8 @@ * .. * .. External Subroutines .. EXTERNAL ALAERH, ALAHD, ALASUM, CERRSY, CGEEVX, CGET04, - $ CLACPY, CLARHS, CLATB4, CLATMS, CSYT02, CSYT03, - $ CSYCON_ROOK, CSYT01_ROOK, CSYTRF_ROOK, + $ CLACPY, CLARHS, CLATB4, CLATMS, CLATSY, CSYT02, + $ CSYT03, CSYCON_ROOK, CSYT01_ROOK, CSYTRF_ROOK, $ CSYTRI_ROOK, CSYTRS_ROOK, XLAENV * .. * .. Intrinsic Functions .. @@ -317,101 +317,112 @@ DO 250 IUPLO = 1, 2 UPLO = UPLOS( IUPLO ) * -* Begin generate the test matrix A. + IF( IMAT.NE.NTYPES ) THEN * -* Set up parameters with CLATB4 for the matrix generator -* based on the type of matrix to be generated. +* Begin generate the test matrix A. * - CALL CLATB4( MATPATH, IMAT, N, N, TYPE, KL, KU, ANORM, - $ MODE, CNDNUM, DIST ) +* Set up parameters with CLATB4 for the matrix generator +* based on the type of matrix to be generated. * -* Generate a matrix with CLATMS. + CALL CLATB4( MATPATH, IMAT, N, N, TYPE, KL, KU, ANORM, + $ MODE, CNDNUM, DIST ) * - SRNAMT = 'CLATMS' - CALL CLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE, - $ CNDNUM, ANORM, KL, KU, UPLO, A, LDA, WORK, - $ INFO ) +* Generate a matrix with CLATMS. * -* Check error code from CLATMS and handle error. + SRNAMT = 'CLATMS' + CALL CLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE, + $ CNDNUM, ANORM, KL, KU, UPLO, A, LDA, + $ WORK, INFO ) * - IF( INFO.NE.0 ) THEN - CALL ALAERH( PATH, 'CLATMS', INFO, 0, UPLO, N, N, -1, - $ -1, -1, IMAT, NFAIL, NERRS, NOUT ) +* Check error code from CLATMS and handle error. * -* Skip all tests for this generated matrix -* - GO TO 250 - END IF + IF( INFO.NE.0 ) THEN + CALL ALAERH( PATH, 'CLATMS', INFO, 0, UPLO, N, N, + $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT ) * -* For matrix types 3-6, zero one or more rows and -* columns of the matrix to test that INFO is returned -* correctly. +* Skip all tests for this generated matrix * - IF( ZEROT ) THEN - IF( IMAT.EQ.3 ) THEN - IZERO = 1 - ELSE IF( IMAT.EQ.4 ) THEN - IZERO = N - ELSE - IZERO = N / 2 + 1 + GO TO 250 END IF * - IF( IMAT.LT.6 ) THEN -* -* Set row and column IZERO to zero. +* For matrix types 3-6, zero one or more rows and +* columns of the matrix to test that INFO is returned +* correctly. * - IF( IUPLO.EQ.1 ) THEN - IOFF = ( IZERO-1 )*LDA - DO 20 I = 1, IZERO - 1 - A( IOFF+I ) = CZERO - 20 CONTINUE - IOFF = IOFF + IZERO - DO 30 I = IZERO, N - A( IOFF ) = CZERO - IOFF = IOFF + LDA - 30 CONTINUE + IF( ZEROT ) THEN + IF( IMAT.EQ.3 ) THEN + IZERO = 1 + ELSE IF( IMAT.EQ.4 ) THEN + IZERO = N ELSE - IOFF = IZERO - DO 40 I = 1, IZERO - 1 - A( IOFF ) = CZERO - IOFF = IOFF + LDA - 40 CONTINUE - IOFF = IOFF - IZERO - DO 50 I = IZERO, N - A( IOFF+I ) = CZERO - 50 CONTINUE + IZERO = N / 2 + 1 END IF - ELSE - IOFF = 0 - IF( IUPLO.EQ.1 ) THEN * -* Set the first IZERO rows and columns to zero. + IF( IMAT.LT.6 ) THEN * - DO 70 J = 1, N - I2 = MIN( J, IZERO ) - DO 60 I = 1, I2 - A( IOFF+I ) = CZERO - 60 CONTINUE - IOFF = IOFF + LDA - 70 CONTINUE - ELSE +* Set row and column IZERO to zero. * -* Set the last IZERO rows and columns to zero. -* - DO 90 J = 1, N - I1 = MAX( J, IZERO ) - DO 80 I = I1, N + IF( IUPLO.EQ.1 ) THEN + IOFF = ( IZERO-1 )*LDA + DO 20 I = 1, IZERO - 1 + A( IOFF+I ) = CZERO + 20 CONTINUE + IOFF = IOFF + IZERO + DO 30 I = IZERO, N + A( IOFF ) = CZERO + IOFF = IOFF + LDA + 30 CONTINUE + ELSE + IOFF = IZERO + DO 40 I = 1, IZERO - 1 + A( IOFF ) = CZERO + IOFF = IOFF + LDA + 40 CONTINUE + IOFF = IOFF - IZERO + DO 50 I = IZERO, N A( IOFF+I ) = CZERO - 80 CONTINUE - IOFF = IOFF + LDA - 90 CONTINUE + 50 CONTINUE + END IF + ELSE + IOFF = 0 + IF( IUPLO.EQ.1 ) THEN +* +* Set the first IZERO rows and columns to zero. +* + DO 70 J = 1, N + I2 = MIN( J, IZERO ) + DO 60 I = 1, I2 + A( IOFF+I ) = CZERO + 60 CONTINUE + IOFF = IOFF + LDA + 70 CONTINUE + ELSE +* +* Set the last IZERO rows and columns to zero. +* + DO 90 J = 1, N + I1 = MAX( J, IZERO ) + DO 80 I = I1, N + A( IOFF+I ) = CZERO + 80 CONTINUE + IOFF = IOFF + LDA + 90 CONTINUE + END IF END IF + ELSE + IZERO = 0 END IF +* +* End generate the test matrix A. +* ELSE - IZERO = 0 - END IF * -* End generate the test matrix A. +* Use a special block diagonal matrix to test alternate +* code for the 2 x 2 blocks. +* + CALL CLATSY( UPLO, N, A, LDA, ISEED ) +* + END IF * * Do for each value of NB in NBVAL * diff --git a/TESTING/ctest.in b/TESTING/ctest.in index 5cbaff1..6e6763c 100644 --- a/TESTING/ctest.in +++ b/TESTING/ctest.in @@ -25,7 +25,7 @@ CPT 12 List types on next line if 0 < NTYPES < 12 CHE 10 List types on next line if 0 < NTYPES < 10 CHP 10 List types on next line if 0 < NTYPES < 10 CSY 11 List types on next line if 0 < NTYPES < 11 -CSR 10 List types on next line if 0 < NTYPES < 10 +CSR 11 List types on next line if 0 < NTYPES < 11 CSP 11 List types on next line if 0 < NTYPES < 11 CTR 18 List types on next line if 0 < NTYPES < 18 CTP 18 List types on next line if 0 < NTYPES < 18 -- 2.7.4