summaryrefslogtreecommitdiff
path: root/TESTING/LIN/zchksy.f
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2010-06-01 23:12:18 +0000
committerjulie <julielangou@users.noreply.github.com>2010-06-01 23:12:18 +0000
commit1d9dfd813972e225de66a66205f2fa27de9fe8e3 (patch)
tree70e3185d207f0d92d8a2cd3f8153ac1e7431889d /TESTING/LIN/zchksy.f
parent8a6f5c968a408594c5730e3a45f36e46b114a90b (diff)
downloadlapack-1d9dfd813972e225de66a66205f2fa27de9fe8e3.tar.gz
lapack-1d9dfd813972e225de66a66205f2fa27de9fe8e3.tar.bz2
lapack-1d9dfd813972e225de66a66205f2fa27de9fe8e3.zip
Add SYTRS2 routine - A BLAS 3 version of SYTRS
Add SYCONV routine: convert back and forth the factorization returned by SYTRF to be able to call SYTRS2. Modify SYSV that now is calling SYTRS2 instead of SYTRS (and also SYCONV to convert and revert the factorization returned by SYTRF). Modify testing to have TRS but also TRS2 tested in the LIN testing for SY.
Diffstat (limited to 'TESTING/LIN/zchksy.f')
-rw-r--r--TESTING/LIN/zchksy.f59
1 files changed, 44 insertions, 15 deletions
diff --git a/TESTING/LIN/zchksy.f b/TESTING/LIN/zchksy.f
index fcc794ae..3995c08e 100644
--- a/TESTING/LIN/zchksy.f
+++ b/TESTING/LIN/zchksy.f
@@ -22,7 +22,7 @@
* Purpose
* =======
*
-* ZCHKSY tests ZSYTRF, -TRI, -TRS, -RFS, and -CON.
+* ZCHKSY tests ZSYTRF, -TRI, -TRS, -TRS2, -RFS, and -CON.
*
* Arguments
* =========
@@ -94,7 +94,7 @@
INTEGER NTYPES
PARAMETER ( NTYPES = 11 )
INTEGER NTESTS
- PARAMETER ( NTESTS = 8 )
+ PARAMETER ( NTESTS = 9 )
* ..
* .. Local Scalars ..
LOGICAL TRFCON, ZEROT
@@ -118,7 +118,7 @@
EXTERNAL ALAERH, ALAHD, ALASUM, XLAENV, ZERRSY, ZGET04,
$ ZLACPY, ZLARHS, ZLATB4, ZLATMS, ZLATSY, ZPOT05,
$ ZSYCON, ZSYRFS, ZSYT01, ZSYT02, ZSYT03, ZSYTRF,
- $ ZSYTRI, ZSYTRS
+ $ ZSYTRI, ZSYTRS, ZSYTRS2
* ..
* .. Intrinsic Functions ..
INTRINSIC MAX, MIN
@@ -381,7 +381,7 @@
DO 130 IRHS = 1, NNS
NRHS = NSVAL( IRHS )
*
-*+ TEST 3
+*+ TEST 3 (Using ZSYTRS)
* Solve and compute residual for A * X = B.
*
SRNAMT = 'ZLARHS'
@@ -405,13 +405,42 @@
CALL ZSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
$ LDA, RWORK, RESULT( 3 ) )
*
-*+ TEST 4
+*+ TEST 4 (Using ZSYTRS2)
+* Solve and compute residual for A * X = B.
+*
+ SRNAMT = 'ZLARHS'
+ CALL ZLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
+ $ NRHS, A, LDA, XACT, LDA, B, LDA,
+ $ ISEED, INFO )
+ CALL ZLACPY( 'Full', N, NRHS, B, LDA, X, LDA )
+*
+ SRNAMT = 'ZSYTRS2'
+ CALL ZSYCONV( UPLO, 'C', N, AFAC, LDA, IWORK, WORK,
+ $ INFO )
+ CALL ZSYTRS2( UPLO, N, NRHS, AFAC, LDA, IWORK, X,
+ $ LDA, WORK, INFO )
+ CALL ZSYCONV( UPLO, 'R', N, AFAC, LDA, IWORK, WORK,
+ $ INFO )
+*
+* Check error code from ZSYTRS.
+*
+ IF( INFO.NE.0 )
+ $ CALL ALAERH( PATH, 'ZSYTRS', INFO, 0, UPLO, N,
+ $ N, -1, -1, NRHS, IMAT, NFAIL,
+ $ NERRS, NOUT )
+*
+ CALL ZLACPY( 'Full', N, NRHS, B, LDA, WORK, LDA )
+ CALL ZSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
+ $ LDA, RWORK, RESULT( 4 ) )
+*
+*
+*+ TEST 5
* Check solution from generated exact solution.
*
CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
- $ RESULT( 4 ) )
+ $ RESULT( 5 ) )
*
-*+ TESTS 5, 6, and 7
+*+ TESTS 6, 7, and 8
* Use iterative refinement to improve the solution.
*
SRNAMT = 'ZSYRFS'
@@ -428,15 +457,15 @@
$ NERRS, NOUT )
*
CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
- $ RESULT( 5 ) )
+ $ RESULT( 6 ) )
CALL ZPOT05( UPLO, N, NRHS, A, LDA, B, LDA, X, LDA,
$ XACT, LDA, RWORK, RWORK( NRHS+1 ),
- $ RESULT( 6 ) )
+ $ RESULT( 7 ) )
*
* Print information about the tests that did not pass
* the threshold.
*
- DO 120 K = 3, 7
+ DO 120 K = 3, 8
IF( RESULT( K ).GE.THRESH ) THEN
IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
$ CALL ALAHD( NOUT, PATH )
@@ -448,7 +477,7 @@
NRUN = NRUN + 5
130 CONTINUE
*
-*+ TEST 8
+*+ TEST 9
* Get an estimate of RCOND = 1/CNDNUM.
*
140 CONTINUE
@@ -463,16 +492,16 @@
$ CALL ALAERH( PATH, 'ZSYCON', INFO, 0, UPLO, N, N,
$ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
*
- RESULT( 8 ) = DGET06( RCOND, RCONDC )
+ RESULT( 9 ) = DGET06( RCOND, RCONDC )
*
* Print information about the tests that did not pass
* the threshold.
*
- IF( RESULT( 8 ).GE.THRESH ) THEN
+ IF( RESULT( 9 ).GE.THRESH ) THEN
IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
$ CALL ALAHD( NOUT, PATH )
- WRITE( NOUT, FMT = 9997 )UPLO, N, IMAT, 8,
- $ RESULT( 8 )
+ WRITE( NOUT, FMT = 9997 )UPLO, N, IMAT, 9,
+ $ RESULT( 9 )
NFAIL = NFAIL + 1
END IF
NRUN = NRUN + 1