diff options
author | Ichitaro Yamazaki <iyamazak@bunsen.icl.utk.edu> | 2016-11-17 16:26:41 -0500 |
---|---|---|
committer | Ichitaro Yamazaki <iyamazak@bunsen.icl.utk.edu> | 2016-11-17 16:26:41 -0500 |
commit | 9a72444a62069e351b3c0279f32abfcb5ab2d111 (patch) | |
tree | 6a6d55ca742ca994571b75a77120c322f49da969 | |
parent | 8b4f3fd9a349567fb71ed8decb1c83a090b9e6b2 (diff) | |
download | lapack-9a72444a62069e351b3c0279f32abfcb5ab2d111.tar.gz lapack-9a72444a62069e351b3c0279f32abfcb5ab2d111.tar.bz2 lapack-9a72444a62069e351b3c0279f32abfcb5ab2d111.zip |
insert argument check for Aasen's complex symmetric, and also check for
lwork > 0.
-rw-r--r-- | TESTING/LIN/cchkhe_aa.f | 6 | ||||
-rw-r--r-- | TESTING/LIN/cchksy_aa.f | 4 | ||||
-rw-r--r-- | TESTING/LIN/cerrhe.f | 12 | ||||
-rw-r--r-- | TESTING/LIN/cerrsy.f | 50 | ||||
-rw-r--r-- | TESTING/LIN/dchksy_aa.f | 4 | ||||
-rw-r--r-- | TESTING/LIN/derrsy.f | 12 | ||||
-rw-r--r-- | TESTING/LIN/schksy_aa.f | 4 | ||||
-rw-r--r-- | TESTING/LIN/serrsy.f | 15 | ||||
-rw-r--r-- | TESTING/LIN/zchkhe_aa.f | 4 | ||||
-rw-r--r-- | TESTING/LIN/zchksy_aa.f | 4 | ||||
-rw-r--r-- | TESTING/LIN/zerrhe.f | 15 | ||||
-rw-r--r-- | TESTING/LIN/zerrsy.f | 44 |
12 files changed, 159 insertions, 15 deletions
diff --git a/TESTING/LIN/cchkhe_aa.f b/TESTING/LIN/cchkhe_aa.f index 5982c619..9910deaa 100644 --- a/TESTING/LIN/cchkhe_aa.f +++ b/TESTING/LIN/cchkhe_aa.f @@ -211,7 +211,7 @@ INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS, $ IUPLO, IZERO, J, K, KL, KU, LDA, LWORK, MODE, $ N, NB, NERRS, NFAIL, NIMAT, NRHS, NRUN, NT - REAL ANORM, CNDNUM, RCOND, RCONDC + REAL ANORM, CNDNUM, RCONDC * .. * .. Local Arrays .. CHARACTER UPLOS( 2 ) @@ -431,7 +431,7 @@ * the block structure of D. AINV is a work array for * block factorization, LWORK is the length of AINV. * - LWORK = ( NB+1 )*LDA + LWORK = MAX( 1, ( NB+1 )*LDA ) SRNAMT = 'CHETRF_AA' CALL CHETRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) @@ -519,7 +519,7 @@ CALL CLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'CHETRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL CHETRS_AA( UPLO, N, NRHS, AFAC, LDA, IWORK, $ X, LDA, WORK, LWORK, INFO ) * diff --git a/TESTING/LIN/cchksy_aa.f b/TESTING/LIN/cchksy_aa.f index 68952347..b7cd47f6 100644 --- a/TESTING/LIN/cchksy_aa.f +++ b/TESTING/LIN/cchksy_aa.f @@ -433,7 +433,7 @@ * block factorization, LWORK is the length of AINV. * SRNAMT = 'CSYTRF_AA' - LWORK = N*NB + N + LWORK = MAX( 1, N*NB + N ) CALL CSYTRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) * @@ -520,7 +520,7 @@ CALL CLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'CSYTRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL CSYTRS_AA( UPLO, N, NRHS, AFAC, LDA, $ IWORK, X, LDA, WORK, LWORK, $ INFO ) diff --git a/TESTING/LIN/cerrhe.f b/TESTING/LIN/cerrhe.f index 3711b8e3..2bc50c0d 100644 --- a/TESTING/LIN/cerrhe.f +++ b/TESTING/LIN/cerrhe.f @@ -488,6 +488,12 @@ INFOT = 4 CALL CHETRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL CHETRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL CHETRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) * * CHETRS_AA * @@ -507,6 +513,12 @@ INFOT = 8 CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL CHETRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, 0, INFO ) + CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL CHETRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, -2, INFO ) + CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) * * Test error exits of the routines that use factorization * of a Hermitian indefinite packed matrix with patrial diff --git a/TESTING/LIN/cerrsy.f b/TESTING/LIN/cerrsy.f index c7613bd6..e4bdc1dd 100644 --- a/TESTING/LIN/cerrsy.f +++ b/TESTING/LIN/cerrsy.f @@ -547,6 +547,56 @@ INFOT = 5 CALL CSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO ) CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK ) +* + ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN +* +* Test error exits of the routines that use factorization +* of a symmetric indefinite matrix with Aasen's algorithm +* +* CSYTRF_AA +* + SRNAMT = 'CSYTRF_AA' + INFOT = 1 + CALL CSYTRF_AA( '/', 0, A, 1, IP, W, 1, INFO ) + CALL CHKXER( 'CSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL CSYTRF_AA( 'U', -1, A, 1, IP, W, 1, INFO ) + CALL CHKXER( 'CSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 4 + CALL CSYTRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) + CALL CHKXER( 'CSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL CSYTRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'CSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL CSYTRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'CSYTRF_AA', INFOT, NOUT, LERR, OK ) +* +* CSYTRS_AA +* + SRNAMT = 'CSYTRS_AA' + INFOT = 1 + CALL CSYTRS_AA( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL CSYTRS_AA( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 3 + CALL CSYTRS_AA( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 5 + CALL CSYTRS_AA( 'U', 2, 1, A, 1, IP, B, 2, W, 1, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 8 + CALL CSYTRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL CSYTRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, 0, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL CSYTRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, -2, INFO ) + CALL CHKXER( 'CSYTRS_AA', INFOT, NOUT, LERR, OK ) +* END IF * * Print a summary line. diff --git a/TESTING/LIN/dchksy_aa.f b/TESTING/LIN/dchksy_aa.f index bc622e4a..a5c0594c 100644 --- a/TESTING/LIN/dchksy_aa.f +++ b/TESTING/LIN/dchksy_aa.f @@ -430,7 +430,7 @@ * block factorization, LWORK is the length of AINV. * SRNAMT = 'DSYTRF_AA' - LWORK = N*NB + N + LWORK = MAX( 1, N*NB + N ) CALL DSYTRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) * @@ -517,7 +517,7 @@ CALL DLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'DSYTRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL DSYTRS_AA( UPLO, N, NRHS, AFAC, LDA, $ IWORK, X, LDA, WORK, LWORK, $ INFO ) diff --git a/TESTING/LIN/derrsy.f b/TESTING/LIN/derrsy.f index 056e931b..7fe74de3 100644 --- a/TESTING/LIN/derrsy.f +++ b/TESTING/LIN/derrsy.f @@ -493,6 +493,12 @@ INFOT = 4 CALL DSYTRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) CALL CHKXER( 'DSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL DSYTRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'DSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL DSYTRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'DSYTRF_AA', INFOT, NOUT, LERR, OK ) * * DSYTRS_AA * @@ -512,6 +518,12 @@ INFOT = 8 CALL DSYTRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) CALL CHKXER( 'DSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL DSYTRS_AA( 'U', 0, 1, A, 2, IP, B, 1, W, 0, INFO ) + CALL CHKXER( 'DSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL DSYTRS_AA( 'U', 0, 1, A, 2, IP, B, 1, W, -2, INFO ) + CALL CHKXER( 'DSYTRS_AA', INFOT, NOUT, LERR, OK ) * ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN * diff --git a/TESTING/LIN/schksy_aa.f b/TESTING/LIN/schksy_aa.f index 6b820f70..128664b2 100644 --- a/TESTING/LIN/schksy_aa.f +++ b/TESTING/LIN/schksy_aa.f @@ -431,7 +431,7 @@ * block factorization, LWORK is the length of AINV. * SRNAMT = 'SSYTRF_AA' - LWORK = N*NB + N + LWORK = MAX( 1, N*NB + N ) CALL SSYTRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) * @@ -518,7 +518,7 @@ CALL SLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'SSYTRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL SSYTRS_AA( UPLO, N, NRHS, AFAC, LDA, $ IWORK, X, LDA, WORK, LWORK, $ INFO ) diff --git a/TESTING/LIN/serrsy.f b/TESTING/LIN/serrsy.f index bf69893a..25309611 100644 --- a/TESTING/LIN/serrsy.f +++ b/TESTING/LIN/serrsy.f @@ -92,7 +92,8 @@ $ SSYTF2_RK, SSYTF2_ROOK, SSYTRF, SSYTRF_RK, $ SSYTRF_ROOK, SSYTRI, SSYTF2, SSYTRI_3, $ SSYTRI_3X, SSYTRI_ROOK, SSYTRF_AA, SSYTRI2, - $ SYTRI2X, SSYTRS, SSYTRS_3, SSYTRS_ROOK, SSYTRS_AA + $ SYTRI2X, SSYTRS, SSYTRS_3, SSYTRS_ROOK, + $ SSYTRS_AA * .. * .. Scalars in Common .. LOGICAL LERR, OK @@ -492,6 +493,12 @@ INFOT = 4 CALL SSYTRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) CALL CHKXER( 'SSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL SSYTRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'SSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL SSYTRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'SSYTRF_AA', INFOT, NOUT, LERR, OK ) * * SSYTRS_AA * @@ -511,6 +518,12 @@ INFOT = 8 CALL SSYTRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) CALL CHKXER( 'SSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL SSYTRS_AA( 'U', 0, 1, A, 2, IP, B, 1, W, 0, INFO ) + CALL CHKXER( 'SSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL SSYTRS_AA( 'U', 0, 1, A, 2, IP, B, 1, W, -2, INFO ) + CALL CHKXER( 'SSYTRS_AA', INFOT, NOUT, LERR, OK ) * ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN * diff --git a/TESTING/LIN/zchkhe_aa.f b/TESTING/LIN/zchkhe_aa.f index c68be161..1559c88a 100644 --- a/TESTING/LIN/zchkhe_aa.f +++ b/TESTING/LIN/zchkhe_aa.f @@ -430,7 +430,7 @@ * the block structure of D. AINV is a work array for * block factorization, LWORK is the length of AINV. * - LWORK = ( NB+1 )*LDA + LWORK = MAX( 1, ( NB+1 )*LDA ) SRNAMT = 'ZHETRF_AA' CALL ZHETRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) @@ -518,7 +518,7 @@ CALL ZLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'ZHETRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL ZHETRS_AA( UPLO, N, NRHS, AFAC, LDA, IWORK, $ X, LDA, WORK, LWORK, INFO ) * diff --git a/TESTING/LIN/zchksy_aa.f b/TESTING/LIN/zchksy_aa.f index f38b4771..d231746f 100644 --- a/TESTING/LIN/zchksy_aa.f +++ b/TESTING/LIN/zchksy_aa.f @@ -433,7 +433,7 @@ * block factorization, LWORK is the length of AINV. * SRNAMT = 'ZSYTRF_AA' - LWORK = N*NB + N + LWORK = MAX( 1, N*NB + N ) CALL ZSYTRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV, $ LWORK, INFO ) * @@ -520,7 +520,7 @@ CALL ZLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) * SRNAMT = 'ZSYTRS_AA' - LWORK = 3*N-2 + LWORK = MAX( 1, 3*N-2 ) CALL ZSYTRS_AA( UPLO, N, NRHS, AFAC, LDA, $ IWORK, X, LDA, WORK, LWORK, $ INFO ) diff --git a/TESTING/LIN/zerrhe.f b/TESTING/LIN/zerrhe.f index b6304b1c..d15b2cf4 100644 --- a/TESTING/LIN/zerrhe.f +++ b/TESTING/LIN/zerrhe.f @@ -93,7 +93,8 @@ $ ZHETRF_RK, ZHETRF_ROOK, ZHETRF_AA, ZHETRI, $ ZHETRI_3, ZHETRI_3X, ZHETRI_ROOK, ZHETRI2, $ ZHETRI2X, ZHETRS, ZHETRS_3, ZHETRS_ROOK, - $ ZHETRS_AA, ZHPCON, ZHPRFS, ZHPTRF, ZHPTRI, ZHPTRS + $ ZHETRS_AA, ZHPCON, ZHPRFS, ZHPTRF, ZHPTRI, + $ ZHPTRS * .. * .. Scalars in Common .. LOGICAL LERR, OK @@ -489,6 +490,12 @@ INFOT = 4 CALL ZHETRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) CALL CHKXER( 'ZHETRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZHETRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'ZHETRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZHETRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'ZHETRF_AA', INFOT, NOUT, LERR, OK ) * * ZHETRS_AA * @@ -508,6 +515,12 @@ INFOT = 8 CALL ZHETRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) CALL CHKXER( 'ZHETRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL ZHETRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, 0, INFO ) + CALL CHKXER( 'ZHETRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 10 + CALL ZHETRS_AA( 'U', 0, 1, A, 1, IP, B, 1, W, -2, INFO ) + CALL CHKXER( 'ZHETRS_AA', INFOT, NOUT, LERR, OK ) * ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN * diff --git a/TESTING/LIN/zerrsy.f b/TESTING/LIN/zerrsy.f index 45e5f0c0..eb8bb628 100644 --- a/TESTING/LIN/zerrsy.f +++ b/TESTING/LIN/zerrsy.f @@ -549,6 +549,50 @@ INFOT = 5 CALL ZSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO ) CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK ) +* + ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN +* +* Test error exits of the routines that use factorization +* of a symmetric indefinite matrix with Aasen's algorithm. +* +* ZSYTRF_AA +* + SRNAMT = 'ZSYTRF_AA' + INFOT = 1 + CALL ZSYTRF_AA( '/', 0, A, 1, IP, W, 1, INFO ) + CALL CHKXER( 'ZSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL ZSYTRF_AA( 'U', -1, A, 1, IP, W, 1, INFO ) + CALL CHKXER( 'ZSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 4 + CALL ZSYTRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) + CALL CHKXER( 'ZSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZSYTRF_AA( 'U', 0, A, 1, IP, W, 0, INFO ) + CALL CHKXER( 'ZSYTRF_AA', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZSYTRF_AA( 'U', 0, A, 1, IP, W, -2, INFO ) + CALL CHKXER( 'ZSYTRF_AA', INFOT, NOUT, LERR, OK ) +* +* ZSYTRS_AA +* + SRNAMT = 'ZSYTRS_AA' + INFOT = 1 + CALL ZSYTRS_AA( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'ZSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL ZSYTRS_AA( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'ZSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 3 + CALL ZSYTRS_AA( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'ZSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 5 + CALL ZSYTRS_AA( 'U', 2, 1, A, 1, IP, B, 2, W, 1, INFO ) + CALL CHKXER( 'ZSYTRS_AA', INFOT, NOUT, LERR, OK ) + INFOT = 8 + CALL ZSYTRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) + CALL CHKXER( 'ZSYTRS_AA', INFOT, NOUT, LERR, OK ) +* END IF * * Print a summary line. |