3131* >
3232* > \verbatim
3333* >
34- * > ZCHKTR tests ZTRTRI, -TRS, -RFS, and -CON, and ZLATRS
34+ * > ZCHKTR tests ZTRTRI, -TRS, -RFS, and -CON, and ZLATRS(3)
3535* > \endverbatim
3636*
3737* Arguments:
@@ -184,7 +184,7 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
184184 INTEGER NTYPE1, NTYPES
185185 PARAMETER ( NTYPE1 = 10 , NTYPES = 18 )
186186 INTEGER NTESTS
187- PARAMETER ( NTESTS = 9 )
187+ PARAMETER ( NTESTS = 10 )
188188 INTEGER NTRAN
189189 PARAMETER ( NTRAN = 3 )
190190 DOUBLE PRECISION ONE, ZERO
@@ -195,24 +195,24 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
195195 CHARACTER * 3 PATH
196196 INTEGER I, IDIAG, IMAT, IN , INB, INFO, IRHS, ITRAN,
197197 $ IUPLO, K, LDA, N, NB, NERRS, NFAIL, NRHS, NRUN
198- DOUBLE PRECISION AINVNM, ANORM, DUMMY, RCOND, RCONDC, RCONDI ,
199- $ RCONDO, SCALE
198+ DOUBLE PRECISION AINVNM, ANORM, BIGNUM, DUMMY, RCOND, RCONDC,
199+ $ RCONDI, RCONDO, RES, SCALE, DLAMCH
200200* ..
201201* .. Local Arrays ..
202202 CHARACTER TRANSS( NTRAN ), UPLOS( 2 )
203203 INTEGER ISEED( 4 ), ISEEDY( 4 )
204- DOUBLE PRECISION RESULT( NTESTS )
204+ DOUBLE PRECISION RESULT( NTESTS ), SCALE3( 2 )
205205* ..
206206* .. External Functions ..
207207 LOGICAL LSAME
208208 DOUBLE PRECISION ZLANTR
209209 EXTERNAL LSAME, ZLANTR
210210* ..
211211* .. External Subroutines ..
212- EXTERNAL ALAERH, ALAHD, ALASUM, XLAENV, ZCOPY, ZERRTR ,
213- $ ZGET04, ZLACPY, ZLARHS, ZLATRS, ZLATTR, ZTRCON ,
214- $ ZTRRFS, ZTRT01, ZTRT02, ZTRT03, ZTRT05, ZTRT06 ,
215- $ ZTRTRI, ZTRTRS
212+ EXTERNAL ALAERH, ALAHD, ALASUM, DLAMCH, XLAENV, ZCOPY ,
213+ $ ZDSCAL, ZERRTR, ZGET04, ZLACPY, ZLARHS, ZLATRS ,
214+ $ ZLATRS3, ZLATTR, ZTRCON, ZTRRFS, ZTRT01 ,
215+ $ ZTRT02, ZTRT03, ZTRT05, ZTRT06, ZTRTRI, ZTRTRS
216216* ..
217217* .. Scalars in Common ..
218218 LOGICAL LERR, OK
@@ -236,6 +236,7 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
236236*
237237 PATH( 1 : 1 ) = ' Zomplex precision'
238238 PATH( 2 : 3 ) = ' TR'
239+ BIGNUM = DLAMCH(' Overflow' ) / DLAMCH(' Precision' )
239240 NRUN = 0
240241 NFAIL = 0
241242 NERRS = 0
@@ -380,7 +381,7 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
380381* This line is needed on a Sun SPARCstation.
381382*
382383 IF ( N.GT. 0 )
383- $ DUMMY = A( 1 )
384+ $ DUMMY = DBLE ( A( 1 ) )
384385*
385386 CALL ZTRT02( UPLO, TRANS, DIAG, N, NRHS, A, LDA,
386387 $ X, LDA, B, LDA, WORK, RWORK,
@@ -535,6 +536,32 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
535536 $ RWORK, ONE, B( N+1 ), LDA, X, LDA, WORK,
536537 $ RESULT( 9 ) )
537538*
539+ * + TEST 10
540+ * Solve op(A)*X = B
541+ *
542+ SRNAMT = ' ZLATRS3'
543+ CALL ZCOPY( N, X, 1 , B, 1 )
544+ CALL ZCOPY( N, X, 1 , B( N+1 ), 1 )
545+ CALL ZDSCAL( N, BIGNUM, B( N+1 ), 1 )
546+ CALL ZLATRS3( UPLO, TRANS, DIAG, ' N' , N, 2 , A, LDA,
547+ $ B, MAX (1 , N), SCALE3, RWORK, WORK, NMAX,
548+ $ INFO )
549+ *
550+ * Check error code from ZLATRS3.
551+ *
552+ IF ( INFO.NE. 0 )
553+ $ CALL ALAERH( PATH, ' ZLATRS3' , INFO, 0 ,
554+ $ UPLO // TRANS // DIAG // ' N' , N, N,
555+ $ - 1 , - 1 , - 1 , IMAT, NFAIL, NERRS, NOUT )
556+ CALL ZTRT03( UPLO, TRANS, DIAG, N, 1 , A, LDA,
557+ $ SCALE3( 1 ), RWORK, ONE, B( 1 ), LDA,
558+ $ X, LDA, WORK, RESULT( 10 ) )
559+ CALL ZDSCAL( N, BIGNUM, X, 1 )
560+ CALL ZTRT03( UPLO, TRANS, DIAG, N, 1 , A, LDA,
561+ $ SCALE3( 2 ), RWORK, ONE, B( N+1 ), LDA,
562+ $ X, LDA, WORK, RES )
563+ RESULT( 10 ) = MAX ( RESULT( 10 ), RES )
564+ *
538565* Print information about the tests that did not pass
539566* the threshold.
540567*
@@ -552,7 +579,14 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
552579 $ DIAG, ' Y' , N, IMAT, 9 , RESULT( 9 )
553580 NFAIL = NFAIL + 1
554581 END IF
555- NRUN = NRUN + 2
582+ IF ( RESULT( 10 ).GE. THRESH ) THEN
583+ IF ( NFAIL.EQ. 0 .AND. NERRS.EQ. 0 )
584+ $ CALL ALAHD( NOUT, PATH )
585+ WRITE ( NOUT, FMT = 9996 )' ZLATRS3' , UPLO, TRANS,
586+ $ DIAG, ' N' , N, IMAT, 10 , RESULT( 10 )
587+ NFAIL = NFAIL + 1
588+ END IF
589+ NRUN = NRUN + 3
556590 90 CONTINUE
557591 100 CONTINUE
558592 110 CONTINUE
@@ -565,8 +599,8 @@ SUBROUTINE ZCHKTR( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
565599 9999 FORMAT ( ' UPLO='' ' , A1, ' '' , DIAG='' ' , A1, ' '' , N=' , I5, ' , NB=' ,
566600 $ I4, ' , type ' , I2, ' , test(' , I2, ' )= ' , G12.5 )
567601 9998 FORMAT ( ' UPLO='' ' , A1, ' '' , TRANS='' ' , A1, ' '' , DIAG='' ' , A1,
568- $ ' '' , N=' , I5, ' , NB=' , I4, ' , type ' , I2, ' ,
569- $ test( ' , I2, ' )= ' , G12.5 )
602+ $ ' '' , N=' , I5, ' , NB=' , I4, ' , type ' , I2, ' , test( ' ,
603+ $ I2, ' )= ' , G12.5 )
570604 9997 FORMAT ( ' NORM='' ' , A1, ' '' , UPLO ='' ' , A1, ' '' , N=' , I5, ' ,' ,
571605 $ 11X , ' type ' , I2, ' , test(' , I2, ' )=' , G12.5 )
572606 9996 FORMAT ( 1X , A, ' ( '' ' , A1, ' '' , '' ' , A1, ' '' , '' ' , A1, ' '' , '' ' ,
0 commit comments