![]() |
LAPACK
3.4.0
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b CCHKSY 00002 * 00003 * =========== DOCUMENTATION =========== 00004 * 00005 * Online html documentation available at 00006 * http://www.netlib.org/lapack/explore-html/ 00007 * 00008 * Definition: 00009 * =========== 00010 * 00011 * SUBROUTINE CCHKSY( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, 00012 * THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, 00013 * XACT, WORK, RWORK, IWORK, NOUT ) 00014 * 00015 * .. Scalar Arguments .. 00016 * LOGICAL TSTERR 00017 * INTEGER NMAX, NN, NNB, NNS, NOUT 00018 * REAL THRESH 00019 * .. 00020 * .. Array Arguments .. 00021 * LOGICAL DOTYPE( * ) 00022 * INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * ) 00023 * REAL RWORK( * ) 00024 * COMPLEX A( * ), AFAC( * ), AINV( * ), B( * ), 00025 * $ WORK( * ), X( * ), XACT( * ) 00026 * .. 00027 * 00028 * 00029 *> \par Purpose: 00030 * ============= 00031 *> 00032 *> \verbatim 00033 *> 00034 *> CCHKSY tests CSYTRF, -TRI2, -TRS, -TRS2, -RFS, and -CON. 00035 *> \endverbatim 00036 * 00037 * Arguments: 00038 * ========== 00039 * 00040 *> \param[in] DOTYPE 00041 *> \verbatim 00042 *> DOTYPE is LOGICAL array, dimension (NTYPES) 00043 *> The matrix types to be used for testing. Matrices of type j 00044 *> (for 1 <= j <= NTYPES) are used for testing if DOTYPE(j) = 00045 *> .TRUE.; if DOTYPE(j) = .FALSE., then type j is not used. 00046 *> \endverbatim 00047 *> 00048 *> \param[in] NN 00049 *> \verbatim 00050 *> NN is INTEGER 00051 *> The number of values of N contained in the vector NVAL. 00052 *> \endverbatim 00053 *> 00054 *> \param[in] NVAL 00055 *> \verbatim 00056 *> NVAL is INTEGER array, dimension (NN) 00057 *> The values of the matrix dimension N. 00058 *> \endverbatim 00059 *> 00060 *> \param[in] NNB 00061 *> \verbatim 00062 *> NNB is INTEGER 00063 *> The number of values of NB contained in the vector NBVAL. 00064 *> \endverbatim 00065 *> 00066 *> \param[in] NBVAL 00067 *> \verbatim 00068 *> NBVAL is INTEGER array, dimension (NBVAL) 00069 *> The values of the blocksize NB. 00070 *> \endverbatim 00071 *> 00072 *> \param[in] NNS 00073 *> \verbatim 00074 *> NNS is INTEGER 00075 *> The number of values of NRHS contained in the vector NSVAL. 00076 *> \endverbatim 00077 *> 00078 *> \param[in] NSVAL 00079 *> \verbatim 00080 *> NSVAL is INTEGER array, dimension (NNS) 00081 *> The values of the number of right hand sides NRHS. 00082 *> \endverbatim 00083 *> 00084 *> \param[in] THRESH 00085 *> \verbatim 00086 *> THRESH is REAL 00087 *> The threshold value for the test ratios. A result is 00088 *> included in the output file if RESULT >= THRESH. To have 00089 *> every test ratio printed, use THRESH = 0. 00090 *> \endverbatim 00091 *> 00092 *> \param[in] TSTERR 00093 *> \verbatim 00094 *> TSTERR is LOGICAL 00095 *> Flag that indicates whether error exits are to be tested. 00096 *> \endverbatim 00097 *> 00098 *> \param[in] NMAX 00099 *> \verbatim 00100 *> NMAX is INTEGER 00101 *> The maximum value permitted for N, used in dimensioning the 00102 *> work arrays. 00103 *> \endverbatim 00104 *> 00105 *> \param[out] A 00106 *> \verbatim 00107 *> A is COMPLEX array, dimension (NMAX*NMAX) 00108 *> \endverbatim 00109 *> 00110 *> \param[out] AFAC 00111 *> \verbatim 00112 *> AFAC is COMPLEX array, dimension (NMAX*NMAX) 00113 *> \endverbatim 00114 *> 00115 *> \param[out] AINV 00116 *> \verbatim 00117 *> AINV is COMPLEX array, dimension (NMAX*NMAX) 00118 *> \endverbatim 00119 *> 00120 *> \param[out] B 00121 *> \verbatim 00122 *> B is COMPLEX array, dimension (NMAX*NSMAX) 00123 *> where NSMAX is the largest entry in NSVAL. 00124 *> \endverbatim 00125 *> 00126 *> \param[out] X 00127 *> \verbatim 00128 *> X is COMPLEX array, dimension (NMAX*NSMAX) 00129 *> \endverbatim 00130 *> 00131 *> \param[out] XACT 00132 *> \verbatim 00133 *> XACT is COMPLEX array, dimension (NMAX*NSMAX) 00134 *> \endverbatim 00135 *> 00136 *> \param[out] WORK 00137 *> \verbatim 00138 *> WORK is COMPLEX array, dimension 00139 *> (NMAX*max(2,NSMAX)) 00140 *> \endverbatim 00141 *> 00142 *> \param[out] RWORK 00143 *> \verbatim 00144 *> RWORK is REAL array, 00145 *> dimension (NMAX+2*NSMAX) 00146 *> \endverbatim 00147 *> 00148 *> \param[out] IWORK 00149 *> \verbatim 00150 *> IWORK is INTEGER array, dimension (NMAX) 00151 *> \endverbatim 00152 *> 00153 *> \param[in] NOUT 00154 *> \verbatim 00155 *> NOUT is INTEGER 00156 *> The unit number for output. 00157 *> \endverbatim 00158 * 00159 * Authors: 00160 * ======== 00161 * 00162 *> \author Univ. of Tennessee 00163 *> \author Univ. of California Berkeley 00164 *> \author Univ. of Colorado Denver 00165 *> \author NAG Ltd. 00166 * 00167 *> \date November 2011 00168 * 00169 *> \ingroup complex_lin 00170 * 00171 * ===================================================================== 00172 SUBROUTINE CCHKSY( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, 00173 $ THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, 00174 $ XACT, WORK, RWORK, IWORK, NOUT ) 00175 * 00176 * -- LAPACK test routine (version 3.4.0) -- 00177 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00178 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00179 * November 2011 00180 * 00181 * .. Scalar Arguments .. 00182 LOGICAL TSTERR 00183 INTEGER NMAX, NN, NNB, NNS, NOUT 00184 REAL THRESH 00185 * .. 00186 * .. Array Arguments .. 00187 LOGICAL DOTYPE( * ) 00188 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * ) 00189 REAL RWORK( * ) 00190 COMPLEX A( * ), AFAC( * ), AINV( * ), B( * ), 00191 $ WORK( * ), X( * ), XACT( * ) 00192 * .. 00193 * 00194 * ===================================================================== 00195 * 00196 * .. Parameters .. 00197 REAL ZERO 00198 PARAMETER ( ZERO = 0.0E+0 ) 00199 INTEGER NTYPES 00200 PARAMETER ( NTYPES = 11 ) 00201 INTEGER NTESTS 00202 PARAMETER ( NTESTS = 9 ) 00203 * .. 00204 * .. Local Scalars .. 00205 LOGICAL TRFCON, ZEROT 00206 CHARACTER DIST, TYPE, UPLO, XTYPE 00207 CHARACTER*3 PATH 00208 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS, 00209 $ IUPLO, IZERO, J, K, KL, KU, LDA, LWORK, MODE, 00210 $ N, NB, NERRS, NFAIL, NIMAT, NRHS, NRUN, NT 00211 REAL ANORM, CNDNUM, RCOND, RCONDC 00212 * .. 00213 * .. Local Arrays .. 00214 CHARACTER UPLOS( 2 ) 00215 INTEGER ISEED( 4 ), ISEEDY( 4 ) 00216 REAL RESULT( NTESTS ) 00217 * .. 00218 * .. External Functions .. 00219 REAL CLANSY, SGET06 00220 EXTERNAL CLANSY, SGET06 00221 * .. 00222 * .. External Subroutines .. 00223 EXTERNAL ALAERH, ALAHD, ALASUM, CERRSY, CGET04, CLACPY, 00224 $ CLARHS, CLATB4, CLATMS, CLATSY, CPOT05, CSYCON, 00225 $ CSYRFS, CSYT01, CSYT02, CSYT03, CSYTRF, 00226 $ CSYTRI2, CSYTRS, XLAENV 00227 * .. 00228 * .. Intrinsic Functions .. 00229 INTRINSIC MAX, MIN 00230 * .. 00231 * .. Scalars in Common .. 00232 LOGICAL LERR, OK 00233 CHARACTER*32 SRNAMT 00234 INTEGER INFOT, NUNIT 00235 * .. 00236 * .. Common blocks .. 00237 COMMON / INFOC / INFOT, NUNIT, OK, LERR 00238 COMMON / SRNAMC / SRNAMT 00239 * .. 00240 * .. Data statements .. 00241 DATA ISEEDY / 1988, 1989, 1990, 1991 / 00242 DATA UPLOS / 'U', 'L' / 00243 * .. 00244 * .. Executable Statements .. 00245 * 00246 * Initialize constants and the random number seed. 00247 * 00248 PATH( 1: 1 ) = 'Complex precision' 00249 PATH( 2: 3 ) = 'SY' 00250 NRUN = 0 00251 NFAIL = 0 00252 NERRS = 0 00253 DO 10 I = 1, 4 00254 ISEED( I ) = ISEEDY( I ) 00255 10 CONTINUE 00256 * 00257 * Test the error exits 00258 * 00259 IF( TSTERR ) 00260 $ CALL CERRSY( PATH, NOUT ) 00261 INFOT = 0 00262 * 00263 * Do for each value of N in NVAL 00264 * 00265 DO 180 IN = 1, NN 00266 N = NVAL( IN ) 00267 LDA = MAX( N, 1 ) 00268 XTYPE = 'N' 00269 NIMAT = NTYPES 00270 IF( N.LE.0 ) 00271 $ NIMAT = 1 00272 * 00273 IZERO = 0 00274 DO 170 IMAT = 1, NIMAT 00275 * 00276 * Do the tests only if DOTYPE( IMAT ) is true. 00277 * 00278 IF( .NOT.DOTYPE( IMAT ) ) 00279 $ GO TO 170 00280 * 00281 * Skip types 3, 4, 5, or 6 if the matrix size is too small. 00282 * 00283 ZEROT = IMAT.GE.3 .AND. IMAT.LE.6 00284 IF( ZEROT .AND. N.LT.IMAT-2 ) 00285 $ GO TO 170 00286 * 00287 * Do first for UPLO = 'U', then for UPLO = 'L' 00288 * 00289 DO 160 IUPLO = 1, 2 00290 UPLO = UPLOS( IUPLO ) 00291 * 00292 IF( IMAT.NE.NTYPES ) THEN 00293 * 00294 * Set up parameters with CLATB4 and generate a test 00295 * matrix with CLATMS. 00296 * 00297 CALL CLATB4( PATH, IMAT, N, N, TYPE, KL, KU, ANORM, 00298 $ MODE, CNDNUM, DIST ) 00299 * 00300 SRNAMT = 'CLATMS' 00301 CALL CLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE, 00302 $ CNDNUM, ANORM, KL, KU, 'N', A, LDA, WORK, 00303 $ INFO ) 00304 * 00305 * Check error code from CLATMS. 00306 * 00307 IF( INFO.NE.0 ) THEN 00308 CALL ALAERH( PATH, 'CLATMS', INFO, 0, UPLO, N, N, 00309 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT ) 00310 GO TO 160 00311 END IF 00312 * 00313 * For types 3-6, zero one or more rows and columns of 00314 * the matrix to test that INFO is returned correctly. 00315 * 00316 IF( ZEROT ) THEN 00317 IF( IMAT.EQ.3 ) THEN 00318 IZERO = 1 00319 ELSE IF( IMAT.EQ.4 ) THEN 00320 IZERO = N 00321 ELSE 00322 IZERO = N / 2 + 1 00323 END IF 00324 * 00325 IF( IMAT.LT.6 ) THEN 00326 * 00327 * Set row and column IZERO to zero. 00328 * 00329 IF( IUPLO.EQ.1 ) THEN 00330 IOFF = ( IZERO-1 )*LDA 00331 DO 20 I = 1, IZERO - 1 00332 A( IOFF+I ) = ZERO 00333 20 CONTINUE 00334 IOFF = IOFF + IZERO 00335 DO 30 I = IZERO, N 00336 A( IOFF ) = ZERO 00337 IOFF = IOFF + LDA 00338 30 CONTINUE 00339 ELSE 00340 IOFF = IZERO 00341 DO 40 I = 1, IZERO - 1 00342 A( IOFF ) = ZERO 00343 IOFF = IOFF + LDA 00344 40 CONTINUE 00345 IOFF = IOFF - IZERO 00346 DO 50 I = IZERO, N 00347 A( IOFF+I ) = ZERO 00348 50 CONTINUE 00349 END IF 00350 ELSE 00351 IF( IUPLO.EQ.1 ) THEN 00352 * 00353 * Set the first IZERO rows to zero. 00354 * 00355 IOFF = 0 00356 DO 70 J = 1, N 00357 I2 = MIN( J, IZERO ) 00358 DO 60 I = 1, I2 00359 A( IOFF+I ) = ZERO 00360 60 CONTINUE 00361 IOFF = IOFF + LDA 00362 70 CONTINUE 00363 ELSE 00364 * 00365 * Set the last IZERO rows to zero. 00366 * 00367 IOFF = 0 00368 DO 90 J = 1, N 00369 I1 = MAX( J, IZERO ) 00370 DO 80 I = I1, N 00371 A( IOFF+I ) = ZERO 00372 80 CONTINUE 00373 IOFF = IOFF + LDA 00374 90 CONTINUE 00375 END IF 00376 END IF 00377 ELSE 00378 IZERO = 0 00379 END IF 00380 ELSE 00381 * 00382 * Use a special block diagonal matrix to test alternate 00383 * code for the 2 x 2 blocks. 00384 * 00385 CALL CLATSY( UPLO, N, A, LDA, ISEED ) 00386 END IF 00387 * 00388 * Do for each value of NB in NBVAL 00389 * 00390 DO 150 INB = 1, NNB 00391 NB = NBVAL( INB ) 00392 CALL XLAENV( 1, NB ) 00393 * 00394 * Compute the L*D*L' or U*D*U' factorization of the 00395 * matrix. 00396 * 00397 CALL CLACPY( UPLO, N, N, A, LDA, AFAC, LDA ) 00398 LWORK = MAX( 2, NB )*LDA 00399 SRNAMT = 'CSYTRF' 00400 CALL CSYTRF( UPLO, N, AFAC, LDA, IWORK, AINV, LWORK, 00401 $ INFO ) 00402 * 00403 * Adjust the expected value of INFO to account for 00404 * pivoting. 00405 * 00406 K = IZERO 00407 IF( K.GT.0 ) THEN 00408 100 CONTINUE 00409 IF( IWORK( K ).LT.0 ) THEN 00410 IF( IWORK( K ).NE.-K ) THEN 00411 K = -IWORK( K ) 00412 GO TO 100 00413 END IF 00414 ELSE IF( IWORK( K ).NE.K ) THEN 00415 K = IWORK( K ) 00416 GO TO 100 00417 END IF 00418 END IF 00419 * 00420 * Check error code from CSYTRF. 00421 * 00422 IF( INFO.NE.K ) 00423 $ CALL ALAERH( PATH, 'CSYTRF', INFO, K, UPLO, N, N, 00424 $ -1, -1, NB, IMAT, NFAIL, NERRS, NOUT ) 00425 IF( INFO.NE.0 ) THEN 00426 TRFCON = .TRUE. 00427 ELSE 00428 TRFCON = .FALSE. 00429 END IF 00430 * 00431 *+ TEST 1 00432 * Reconstruct matrix from factors and compute residual. 00433 * 00434 CALL CSYT01( UPLO, N, A, LDA, AFAC, LDA, IWORK, AINV, 00435 $ LDA, RWORK, RESULT( 1 ) ) 00436 NT = 1 00437 * 00438 *+ TEST 2 00439 * Form the inverse and compute the residual. 00440 * 00441 IF( INB.EQ.1 .AND. .NOT.TRFCON ) THEN 00442 CALL CLACPY( UPLO, N, N, AFAC, LDA, AINV, LDA ) 00443 SRNAMT = 'CSYTRI2' 00444 LWORK = (N+NB+1)*(NB+3) 00445 CALL CSYTRI2( UPLO, N, AINV, LDA, IWORK, WORK, 00446 $ LWORK, INFO ) 00447 * 00448 * Check error code from CSYTRI. 00449 * 00450 IF( INFO.NE.0 ) 00451 $ CALL ALAERH( PATH, 'CSYTRI', INFO, 0, UPLO, N, 00452 $ N, -1, -1, -1, IMAT, NFAIL, NERRS, 00453 $ NOUT ) 00454 * 00455 CALL CSYT03( UPLO, N, A, LDA, AINV, LDA, WORK, LDA, 00456 $ RWORK, RCONDC, RESULT( 2 ) ) 00457 NT = 2 00458 END IF 00459 * 00460 * Print information about the tests that did not pass 00461 * the threshold. 00462 * 00463 DO 110 K = 1, NT 00464 IF( RESULT( K ).GE.THRESH ) THEN 00465 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) 00466 $ CALL ALAHD( NOUT, PATH ) 00467 WRITE( NOUT, FMT = 9999 )UPLO, N, NB, IMAT, K, 00468 $ RESULT( K ) 00469 NFAIL = NFAIL + 1 00470 END IF 00471 110 CONTINUE 00472 NRUN = NRUN + NT 00473 * 00474 * Skip the other tests if this is not the first block 00475 * size. 00476 * 00477 IF( INB.GT.1 ) 00478 $ GO TO 150 00479 * 00480 * Do only the condition estimate if INFO is not 0. 00481 * 00482 IF( TRFCON ) THEN 00483 RCONDC = ZERO 00484 GO TO 140 00485 END IF 00486 * 00487 DO 130 IRHS = 1, NNS 00488 NRHS = NSVAL( IRHS ) 00489 * 00490 *+ TEST 3 00491 * Solve and compute residual for A * X = B. 00492 * 00493 SRNAMT = 'CLARHS' 00494 CALL CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU, 00495 $ NRHS, A, LDA, XACT, LDA, B, LDA, 00496 $ ISEED, INFO ) 00497 CALL CLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) 00498 * 00499 SRNAMT = 'CSYTRS' 00500 CALL CSYTRS( UPLO, N, NRHS, AFAC, LDA, IWORK, X, 00501 $ LDA, INFO ) 00502 * 00503 * Check error code from CSYTRS. 00504 * 00505 IF( INFO.NE.0 ) 00506 $ CALL ALAERH( PATH, 'CSYTRS', INFO, 0, UPLO, N, 00507 $ N, -1, -1, NRHS, IMAT, NFAIL, 00508 $ NERRS, NOUT ) 00509 * 00510 CALL CLACPY( 'Full', N, NRHS, B, LDA, WORK, LDA ) 00511 CALL CSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK, 00512 $ LDA, RWORK, RESULT( 3 ) ) 00513 * 00514 *+ TEST 4 00515 * Solve and compute residual for A * X = B. 00516 * 00517 SRNAMT = 'CLARHS' 00518 CALL CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU, 00519 $ NRHS, A, LDA, XACT, LDA, B, LDA, 00520 $ ISEED, INFO ) 00521 CALL CLACPY( 'Full', N, NRHS, B, LDA, X, LDA ) 00522 * 00523 SRNAMT = 'CSYTRS2' 00524 CALL CSYTRS2( UPLO, N, NRHS, AFAC, LDA, IWORK, X, 00525 $ LDA, WORK, INFO ) 00526 * 00527 * Check error code from CSYTRS2. 00528 * 00529 IF( INFO.NE.0 ) 00530 $ CALL ALAERH( PATH, 'CSYTRS2', INFO, 0, UPLO, N, 00531 $ N, -1, -1, NRHS, IMAT, NFAIL, 00532 $ NERRS, NOUT ) 00533 * 00534 CALL CLACPY( 'Full', N, NRHS, B, LDA, WORK, LDA ) 00535 CALL CSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK, 00536 $ LDA, RWORK, RESULT( 4 ) ) 00537 * 00538 *+ TEST 5 00539 * Check solution from generated exact solution. 00540 * 00541 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC, 00542 $ RESULT( 5 ) ) 00543 * 00544 *+ TESTS 6, 7, and 8 00545 * Use iterative refinement to improve the solution. 00546 * 00547 SRNAMT = 'CSYRFS' 00548 CALL CSYRFS( UPLO, N, NRHS, A, LDA, AFAC, LDA, 00549 $ IWORK, B, LDA, X, LDA, RWORK, 00550 $ RWORK( NRHS+1 ), WORK, 00551 $ RWORK( 2*NRHS+1 ), INFO ) 00552 * 00553 * Check error code from CSYRFS. 00554 * 00555 IF( INFO.NE.0 ) 00556 $ CALL ALAERH( PATH, 'CSYRFS', INFO, 0, UPLO, N, 00557 $ N, -1, -1, NRHS, IMAT, NFAIL, 00558 $ NERRS, NOUT ) 00559 * 00560 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC, 00561 $ RESULT( 6 ) ) 00562 CALL CPOT05( UPLO, N, NRHS, A, LDA, B, LDA, X, LDA, 00563 $ XACT, LDA, RWORK, RWORK( NRHS+1 ), 00564 $ RESULT( 7 ) ) 00565 * 00566 * Print information about the tests that did not pass 00567 * the threshold. 00568 * 00569 DO 120 K = 3, 8 00570 IF( RESULT( K ).GE.THRESH ) THEN 00571 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) 00572 $ CALL ALAHD( NOUT, PATH ) 00573 WRITE( NOUT, FMT = 9998 )UPLO, N, NRHS, 00574 $ IMAT, K, RESULT( K ) 00575 NFAIL = NFAIL + 1 00576 END IF 00577 120 CONTINUE 00578 NRUN = NRUN + 5 00579 130 CONTINUE 00580 * 00581 *+ TEST 9 00582 * Get an estimate of RCOND = 1/CNDNUM. 00583 * 00584 140 CONTINUE 00585 ANORM = CLANSY( '1', UPLO, N, A, LDA, RWORK ) 00586 SRNAMT = 'CSYCON' 00587 CALL CSYCON( UPLO, N, AFAC, LDA, IWORK, ANORM, RCOND, 00588 $ WORK, INFO ) 00589 * 00590 * Check error code from CSYCON. 00591 * 00592 IF( INFO.NE.0 ) 00593 $ CALL ALAERH( PATH, 'CSYCON', INFO, 0, UPLO, N, N, 00594 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT ) 00595 * 00596 RESULT( 9 ) = SGET06( RCOND, RCONDC ) 00597 * 00598 * Print information about the tests that did not pass 00599 * the threshold. 00600 * 00601 IF( RESULT( 9 ).GE.THRESH ) THEN 00602 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) 00603 $ CALL ALAHD( NOUT, PATH ) 00604 WRITE( NOUT, FMT = 9997 )UPLO, N, IMAT, 9, 00605 $ RESULT( 9 ) 00606 NFAIL = NFAIL + 1 00607 END IF 00608 NRUN = NRUN + 1 00609 150 CONTINUE 00610 160 CONTINUE 00611 170 CONTINUE 00612 180 CONTINUE 00613 * 00614 * Print a summary of the results. 00615 * 00616 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS ) 00617 * 00618 9999 FORMAT( ' UPLO = ''', A1, ''', N =', I5, ', NB =', I4, ', type ', 00619 $ I2, ', test ', I2, ', ratio =', G12.5 ) 00620 9998 FORMAT( ' UPLO = ''', A1, ''', N =', I5, ', NRHS=', I3, ', type ', 00621 $ I2, ', test(', I2, ') =', G12.5 ) 00622 9997 FORMAT( ' UPLO = ''', A1, ''', N =', I5, ',', 10X, ' type ', I2, 00623 $ ', test(', I2, ') =', G12.5 ) 00624 RETURN 00625 * 00626 * End of CCHKSY 00627 * 00628 END