You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

zdrvgt.f 19 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. *> \brief \b ZDRVGT
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * SUBROUTINE ZDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF,
  12. * B, X, XACT, WORK, RWORK, IWORK, NOUT )
  13. *
  14. * .. Scalar Arguments ..
  15. * LOGICAL TSTERR
  16. * INTEGER NN, NOUT, NRHS
  17. * DOUBLE PRECISION THRESH
  18. * ..
  19. * .. Array Arguments ..
  20. * LOGICAL DOTYPE( * )
  21. * INTEGER IWORK( * ), NVAL( * )
  22. * DOUBLE PRECISION RWORK( * )
  23. * COMPLEX*16 A( * ), AF( * ), B( * ), WORK( * ), X( * ),
  24. * $ XACT( * )
  25. * ..
  26. *
  27. *
  28. *> \par Purpose:
  29. * =============
  30. *>
  31. *> \verbatim
  32. *>
  33. *> ZDRVGT tests ZGTSV and -SVX.
  34. *> \endverbatim
  35. *
  36. * Arguments:
  37. * ==========
  38. *
  39. *> \param[in] DOTYPE
  40. *> \verbatim
  41. *> DOTYPE is LOGICAL array, dimension (NTYPES)
  42. *> The matrix types to be used for testing. Matrices of type j
  43. *> (for 1 <= j <= NTYPES) are used for testing if DOTYPE(j) =
  44. *> .TRUE.; if DOTYPE(j) = .FALSE., then type j is not used.
  45. *> \endverbatim
  46. *>
  47. *> \param[in] NN
  48. *> \verbatim
  49. *> NN is INTEGER
  50. *> The number of values of N contained in the vector NVAL.
  51. *> \endverbatim
  52. *>
  53. *> \param[in] NVAL
  54. *> \verbatim
  55. *> NVAL is INTEGER array, dimension (NN)
  56. *> The values of the matrix dimension N.
  57. *> \endverbatim
  58. *>
  59. *> \param[in] NRHS
  60. *> \verbatim
  61. *> NRHS is INTEGER
  62. *> The number of right hand sides, NRHS >= 0.
  63. *> \endverbatim
  64. *>
  65. *> \param[in] THRESH
  66. *> \verbatim
  67. *> THRESH is DOUBLE PRECISION
  68. *> The threshold value for the test ratios. A result is
  69. *> included in the output file if RESULT >= THRESH. To have
  70. *> every test ratio printed, use THRESH = 0.
  71. *> \endverbatim
  72. *>
  73. *> \param[in] TSTERR
  74. *> \verbatim
  75. *> TSTERR is LOGICAL
  76. *> Flag that indicates whether error exits are to be tested.
  77. *> \endverbatim
  78. *>
  79. *> \param[out] A
  80. *> \verbatim
  81. *> A is COMPLEX*16 array, dimension (NMAX*4)
  82. *> \endverbatim
  83. *>
  84. *> \param[out] AF
  85. *> \verbatim
  86. *> AF is COMPLEX*16 array, dimension (NMAX*4)
  87. *> \endverbatim
  88. *>
  89. *> \param[out] B
  90. *> \verbatim
  91. *> B is COMPLEX*16 array, dimension (NMAX*NRHS)
  92. *> \endverbatim
  93. *>
  94. *> \param[out] X
  95. *> \verbatim
  96. *> X is COMPLEX*16 array, dimension (NMAX*NRHS)
  97. *> \endverbatim
  98. *>
  99. *> \param[out] XACT
  100. *> \verbatim
  101. *> XACT is COMPLEX*16 array, dimension (NMAX*NRHS)
  102. *> \endverbatim
  103. *>
  104. *> \param[out] WORK
  105. *> \verbatim
  106. *> WORK is COMPLEX*16 array, dimension
  107. *> (NMAX*max(3,NRHS))
  108. *> \endverbatim
  109. *>
  110. *> \param[out] RWORK
  111. *> \verbatim
  112. *> RWORK is DOUBLE PRECISION array, dimension (NMAX+2*NRHS)
  113. *> \endverbatim
  114. *>
  115. *> \param[out] IWORK
  116. *> \verbatim
  117. *> IWORK is INTEGER array, dimension (2*NMAX)
  118. *> \endverbatim
  119. *>
  120. *> \param[in] NOUT
  121. *> \verbatim
  122. *> NOUT is INTEGER
  123. *> The unit number for output.
  124. *> \endverbatim
  125. *
  126. * Authors:
  127. * ========
  128. *
  129. *> \author Univ. of Tennessee
  130. *> \author Univ. of California Berkeley
  131. *> \author Univ. of Colorado Denver
  132. *> \author NAG Ltd.
  133. *
  134. *> \date December 2016
  135. *
  136. *> \ingroup complex16_lin
  137. *
  138. * =====================================================================
  139. SUBROUTINE ZDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF,
  140. $ B, X, XACT, WORK, RWORK, IWORK, NOUT )
  141. *
  142. * -- LAPACK test routine (version 3.7.0) --
  143. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  144. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  145. * December 2016
  146. *
  147. * .. Scalar Arguments ..
  148. LOGICAL TSTERR
  149. INTEGER NN, NOUT, NRHS
  150. DOUBLE PRECISION THRESH
  151. * ..
  152. * .. Array Arguments ..
  153. LOGICAL DOTYPE( * )
  154. INTEGER IWORK( * ), NVAL( * )
  155. DOUBLE PRECISION RWORK( * )
  156. COMPLEX*16 A( * ), AF( * ), B( * ), WORK( * ), X( * ),
  157. $ XACT( * )
  158. * ..
  159. *
  160. * =====================================================================
  161. *
  162. * .. Parameters ..
  163. DOUBLE PRECISION ONE, ZERO
  164. PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
  165. INTEGER NTYPES
  166. PARAMETER ( NTYPES = 12 )
  167. INTEGER NTESTS
  168. PARAMETER ( NTESTS = 6 )
  169. * ..
  170. * .. Local Scalars ..
  171. LOGICAL TRFCON, ZEROT
  172. CHARACTER DIST, FACT, TRANS, TYPE
  173. CHARACTER*3 PATH
  174. INTEGER I, IFACT, IMAT, IN, INFO, ITRAN, IX, IZERO, J,
  175. $ K, K1, KL, KOFF, KU, LDA, M, MODE, N, NERRS,
  176. $ NFAIL, NIMAT, NRUN, NT
  177. DOUBLE PRECISION AINVNM, ANORM, ANORMI, ANORMO, COND, RCOND,
  178. $ RCONDC, RCONDI, RCONDO
  179. * ..
  180. * .. Local Arrays ..
  181. CHARACTER TRANSS( 3 )
  182. INTEGER ISEED( 4 ), ISEEDY( 4 )
  183. DOUBLE PRECISION RESULT( NTESTS ), Z( 3 )
  184. * ..
  185. * .. External Functions ..
  186. DOUBLE PRECISION DGET06, DZASUM, ZLANGT
  187. EXTERNAL DGET06, DZASUM, ZLANGT
  188. * ..
  189. * .. External Subroutines ..
  190. EXTERNAL ALADHD, ALAERH, ALASVM, ZCOPY, ZDSCAL, ZERRVX,
  191. $ ZGET04, ZGTSV, ZGTSVX, ZGTT01, ZGTT02, ZGTT05,
  192. $ ZGTTRF, ZGTTRS, ZLACPY, ZLAGTM, ZLARNV, ZLASET,
  193. $ ZLATB4, ZLATMS
  194. * ..
  195. * .. Intrinsic Functions ..
  196. INTRINSIC DCMPLX, MAX
  197. * ..
  198. * .. Scalars in Common ..
  199. LOGICAL LERR, OK
  200. CHARACTER*32 SRNAMT
  201. INTEGER INFOT, NUNIT
  202. * ..
  203. * .. Common blocks ..
  204. COMMON / INFOC / INFOT, NUNIT, OK, LERR
  205. COMMON / SRNAMC / SRNAMT
  206. * ..
  207. * .. Data statements ..
  208. DATA ISEEDY / 0, 0, 0, 1 / , TRANSS / 'N', 'T',
  209. $ 'C' /
  210. * ..
  211. * .. Executable Statements ..
  212. *
  213. PATH( 1: 1 ) = 'Zomplex precision'
  214. PATH( 2: 3 ) = 'GT'
  215. NRUN = 0
  216. NFAIL = 0
  217. NERRS = 0
  218. DO 10 I = 1, 4
  219. ISEED( I ) = ISEEDY( I )
  220. 10 CONTINUE
  221. *
  222. * Test the error exits
  223. *
  224. IF( TSTERR )
  225. $ CALL ZERRVX( PATH, NOUT )
  226. INFOT = 0
  227. *
  228. DO 140 IN = 1, NN
  229. *
  230. * Do for each value of N in NVAL.
  231. *
  232. N = NVAL( IN )
  233. M = MAX( N-1, 0 )
  234. LDA = MAX( 1, N )
  235. NIMAT = NTYPES
  236. IF( N.LE.0 )
  237. $ NIMAT = 1
  238. *
  239. DO 130 IMAT = 1, NIMAT
  240. *
  241. * Do the tests only if DOTYPE( IMAT ) is true.
  242. *
  243. IF( .NOT.DOTYPE( IMAT ) )
  244. $ GO TO 130
  245. *
  246. * Set up parameters with ZLATB4.
  247. *
  248. CALL ZLATB4( PATH, IMAT, N, N, TYPE, KL, KU, ANORM, MODE,
  249. $ COND, DIST )
  250. *
  251. ZEROT = IMAT.GE.8 .AND. IMAT.LE.10
  252. IF( IMAT.LE.6 ) THEN
  253. *
  254. * Types 1-6: generate matrices of known condition number.
  255. *
  256. KOFF = MAX( 2-KU, 3-MAX( 1, N ) )
  257. SRNAMT = 'ZLATMS'
  258. CALL ZLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE, COND,
  259. $ ANORM, KL, KU, 'Z', AF( KOFF ), 3, WORK,
  260. $ INFO )
  261. *
  262. * Check the error code from ZLATMS.
  263. *
  264. IF( INFO.NE.0 ) THEN
  265. CALL ALAERH( PATH, 'ZLATMS', INFO, 0, ' ', N, N, KL,
  266. $ KU, -1, IMAT, NFAIL, NERRS, NOUT )
  267. GO TO 130
  268. END IF
  269. IZERO = 0
  270. *
  271. IF( N.GT.1 ) THEN
  272. CALL ZCOPY( N-1, AF( 4 ), 3, A, 1 )
  273. CALL ZCOPY( N-1, AF( 3 ), 3, A( N+M+1 ), 1 )
  274. END IF
  275. CALL ZCOPY( N, AF( 2 ), 3, A( M+1 ), 1 )
  276. ELSE
  277. *
  278. * Types 7-12: generate tridiagonal matrices with
  279. * unknown condition numbers.
  280. *
  281. IF( .NOT.ZEROT .OR. .NOT.DOTYPE( 7 ) ) THEN
  282. *
  283. * Generate a matrix with elements from [-1,1].
  284. *
  285. CALL ZLARNV( 2, ISEED, N+2*M, A )
  286. IF( ANORM.NE.ONE )
  287. $ CALL ZDSCAL( N+2*M, ANORM, A, 1 )
  288. ELSE IF( IZERO.GT.0 ) THEN
  289. *
  290. * Reuse the last matrix by copying back the zeroed out
  291. * elements.
  292. *
  293. IF( IZERO.EQ.1 ) THEN
  294. A( N ) = Z( 2 )
  295. IF( N.GT.1 )
  296. $ A( 1 ) = Z( 3 )
  297. ELSE IF( IZERO.EQ.N ) THEN
  298. A( 3*N-2 ) = Z( 1 )
  299. A( 2*N-1 ) = Z( 2 )
  300. ELSE
  301. A( 2*N-2+IZERO ) = Z( 1 )
  302. A( N-1+IZERO ) = Z( 2 )
  303. A( IZERO ) = Z( 3 )
  304. END IF
  305. END IF
  306. *
  307. * If IMAT > 7, set one column of the matrix to 0.
  308. *
  309. IF( .NOT.ZEROT ) THEN
  310. IZERO = 0
  311. ELSE IF( IMAT.EQ.8 ) THEN
  312. IZERO = 1
  313. Z( 2 ) = A( N )
  314. A( N ) = ZERO
  315. IF( N.GT.1 ) THEN
  316. Z( 3 ) = A( 1 )
  317. A( 1 ) = ZERO
  318. END IF
  319. ELSE IF( IMAT.EQ.9 ) THEN
  320. IZERO = N
  321. Z( 1 ) = A( 3*N-2 )
  322. Z( 2 ) = A( 2*N-1 )
  323. A( 3*N-2 ) = ZERO
  324. A( 2*N-1 ) = ZERO
  325. ELSE
  326. IZERO = ( N+1 ) / 2
  327. DO 20 I = IZERO, N - 1
  328. A( 2*N-2+I ) = ZERO
  329. A( N-1+I ) = ZERO
  330. A( I ) = ZERO
  331. 20 CONTINUE
  332. A( 3*N-2 ) = ZERO
  333. A( 2*N-1 ) = ZERO
  334. END IF
  335. END IF
  336. *
  337. DO 120 IFACT = 1, 2
  338. IF( IFACT.EQ.1 ) THEN
  339. FACT = 'F'
  340. ELSE
  341. FACT = 'N'
  342. END IF
  343. *
  344. * Compute the condition number for comparison with
  345. * the value returned by ZGTSVX.
  346. *
  347. IF( ZEROT ) THEN
  348. IF( IFACT.EQ.1 )
  349. $ GO TO 120
  350. RCONDO = ZERO
  351. RCONDI = ZERO
  352. *
  353. ELSE IF( IFACT.EQ.1 ) THEN
  354. CALL ZCOPY( N+2*M, A, 1, AF, 1 )
  355. *
  356. * Compute the 1-norm and infinity-norm of A.
  357. *
  358. ANORMO = ZLANGT( '1', N, A, A( M+1 ), A( N+M+1 ) )
  359. ANORMI = ZLANGT( 'I', N, A, A( M+1 ), A( N+M+1 ) )
  360. *
  361. * Factor the matrix A.
  362. *
  363. CALL ZGTTRF( N, AF, AF( M+1 ), AF( N+M+1 ),
  364. $ AF( N+2*M+1 ), IWORK, INFO )
  365. *
  366. * Use ZGTTRS to solve for one column at a time of
  367. * inv(A), computing the maximum column sum as we go.
  368. *
  369. AINVNM = ZERO
  370. DO 40 I = 1, N
  371. DO 30 J = 1, N
  372. X( J ) = ZERO
  373. 30 CONTINUE
  374. X( I ) = ONE
  375. CALL ZGTTRS( 'No transpose', N, 1, AF, AF( M+1 ),
  376. $ AF( N+M+1 ), AF( N+2*M+1 ), IWORK, X,
  377. $ LDA, INFO )
  378. AINVNM = MAX( AINVNM, DZASUM( N, X, 1 ) )
  379. 40 CONTINUE
  380. *
  381. * Compute the 1-norm condition number of A.
  382. *
  383. IF( ANORMO.LE.ZERO .OR. AINVNM.LE.ZERO ) THEN
  384. RCONDO = ONE
  385. ELSE
  386. RCONDO = ( ONE / ANORMO ) / AINVNM
  387. END IF
  388. *
  389. * Use ZGTTRS to solve for one column at a time of
  390. * inv(A'), computing the maximum column sum as we go.
  391. *
  392. AINVNM = ZERO
  393. DO 60 I = 1, N
  394. DO 50 J = 1, N
  395. X( J ) = ZERO
  396. 50 CONTINUE
  397. X( I ) = ONE
  398. CALL ZGTTRS( 'Conjugate transpose', N, 1, AF,
  399. $ AF( M+1 ), AF( N+M+1 ), AF( N+2*M+1 ),
  400. $ IWORK, X, LDA, INFO )
  401. AINVNM = MAX( AINVNM, DZASUM( N, X, 1 ) )
  402. 60 CONTINUE
  403. *
  404. * Compute the infinity-norm condition number of A.
  405. *
  406. IF( ANORMI.LE.ZERO .OR. AINVNM.LE.ZERO ) THEN
  407. RCONDI = ONE
  408. ELSE
  409. RCONDI = ( ONE / ANORMI ) / AINVNM
  410. END IF
  411. END IF
  412. *
  413. DO 110 ITRAN = 1, 3
  414. TRANS = TRANSS( ITRAN )
  415. IF( ITRAN.EQ.1 ) THEN
  416. RCONDC = RCONDO
  417. ELSE
  418. RCONDC = RCONDI
  419. END IF
  420. *
  421. * Generate NRHS random solution vectors.
  422. *
  423. IX = 1
  424. DO 70 J = 1, NRHS
  425. CALL ZLARNV( 2, ISEED, N, XACT( IX ) )
  426. IX = IX + LDA
  427. 70 CONTINUE
  428. *
  429. * Set the right hand side.
  430. *
  431. CALL ZLAGTM( TRANS, N, NRHS, ONE, A, A( M+1 ),
  432. $ A( N+M+1 ), XACT, LDA, ZERO, B, LDA )
  433. *
  434. IF( IFACT.EQ.2 .AND. ITRAN.EQ.1 ) THEN
  435. *
  436. * --- Test ZGTSV ---
  437. *
  438. * Solve the system using Gaussian elimination with
  439. * partial pivoting.
  440. *
  441. CALL ZCOPY( N+2*M, A, 1, AF, 1 )
  442. CALL ZLACPY( 'Full', N, NRHS, B, LDA, X, LDA )
  443. *
  444. SRNAMT = 'ZGTSV '
  445. CALL ZGTSV( N, NRHS, AF, AF( M+1 ), AF( N+M+1 ), X,
  446. $ LDA, INFO )
  447. *
  448. * Check error code from ZGTSV .
  449. *
  450. IF( INFO.NE.IZERO )
  451. $ CALL ALAERH( PATH, 'ZGTSV ', INFO, IZERO, ' ',
  452. $ N, N, 1, 1, NRHS, IMAT, NFAIL,
  453. $ NERRS, NOUT )
  454. NT = 1
  455. IF( IZERO.EQ.0 ) THEN
  456. *
  457. * Check residual of computed solution.
  458. *
  459. CALL ZLACPY( 'Full', N, NRHS, B, LDA, WORK,
  460. $ LDA )
  461. CALL ZGTT02( TRANS, N, NRHS, A, A( M+1 ),
  462. $ A( N+M+1 ), X, LDA, WORK, LDA,
  463. $ RESULT( 2 ) )
  464. *
  465. * Check solution from generated exact solution.
  466. *
  467. CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
  468. $ RESULT( 3 ) )
  469. NT = 3
  470. END IF
  471. *
  472. * Print information about the tests that did not pass
  473. * the threshold.
  474. *
  475. DO 80 K = 2, NT
  476. IF( RESULT( K ).GE.THRESH ) THEN
  477. IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
  478. $ CALL ALADHD( NOUT, PATH )
  479. WRITE( NOUT, FMT = 9999 )'ZGTSV ', N, IMAT,
  480. $ K, RESULT( K )
  481. NFAIL = NFAIL + 1
  482. END IF
  483. 80 CONTINUE
  484. NRUN = NRUN + NT - 1
  485. END IF
  486. *
  487. * --- Test ZGTSVX ---
  488. *
  489. IF( IFACT.GT.1 ) THEN
  490. *
  491. * Initialize AF to zero.
  492. *
  493. DO 90 I = 1, 3*N - 2
  494. AF( I ) = ZERO
  495. 90 CONTINUE
  496. END IF
  497. CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
  498. $ DCMPLX( ZERO ), X, LDA )
  499. *
  500. * Solve the system and compute the condition number and
  501. * error bounds using ZGTSVX.
  502. *
  503. SRNAMT = 'ZGTSVX'
  504. CALL ZGTSVX( FACT, TRANS, N, NRHS, A, A( M+1 ),
  505. $ A( N+M+1 ), AF, AF( M+1 ), AF( N+M+1 ),
  506. $ AF( N+2*M+1 ), IWORK, B, LDA, X, LDA,
  507. $ RCOND, RWORK, RWORK( NRHS+1 ), WORK,
  508. $ RWORK( 2*NRHS+1 ), INFO )
  509. *
  510. * Check the error code from ZGTSVX.
  511. *
  512. IF( INFO.NE.IZERO )
  513. $ CALL ALAERH( PATH, 'ZGTSVX', INFO, IZERO,
  514. $ FACT // TRANS, N, N, 1, 1, NRHS, IMAT,
  515. $ NFAIL, NERRS, NOUT )
  516. *
  517. IF( IFACT.GE.2 ) THEN
  518. *
  519. * Reconstruct matrix from factors and compute
  520. * residual.
  521. *
  522. CALL ZGTT01( N, A, A( M+1 ), A( N+M+1 ), AF,
  523. $ AF( M+1 ), AF( N+M+1 ), AF( N+2*M+1 ),
  524. $ IWORK, WORK, LDA, RWORK, RESULT( 1 ) )
  525. K1 = 1
  526. ELSE
  527. K1 = 2
  528. END IF
  529. *
  530. IF( INFO.EQ.0 ) THEN
  531. TRFCON = .FALSE.
  532. *
  533. * Check residual of computed solution.
  534. *
  535. CALL ZLACPY( 'Full', N, NRHS, B, LDA, WORK, LDA )
  536. CALL ZGTT02( TRANS, N, NRHS, A, A( M+1 ),
  537. $ A( N+M+1 ), X, LDA, WORK, LDA,
  538. $ RESULT( 2 ) )
  539. *
  540. * Check solution from generated exact solution.
  541. *
  542. CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
  543. $ RESULT( 3 ) )
  544. *
  545. * Check the error bounds from iterative refinement.
  546. *
  547. CALL ZGTT05( TRANS, N, NRHS, A, A( M+1 ),
  548. $ A( N+M+1 ), B, LDA, X, LDA, XACT, LDA,
  549. $ RWORK, RWORK( NRHS+1 ), RESULT( 4 ) )
  550. NT = 5
  551. END IF
  552. *
  553. * Print information about the tests that did not pass
  554. * the threshold.
  555. *
  556. DO 100 K = K1, NT
  557. IF( RESULT( K ).GE.THRESH ) THEN
  558. IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
  559. $ CALL ALADHD( NOUT, PATH )
  560. WRITE( NOUT, FMT = 9998 )'ZGTSVX', FACT, TRANS,
  561. $ N, IMAT, K, RESULT( K )
  562. NFAIL = NFAIL + 1
  563. END IF
  564. 100 CONTINUE
  565. *
  566. * Check the reciprocal of the condition number.
  567. *
  568. RESULT( 6 ) = DGET06( RCOND, RCONDC )
  569. IF( RESULT( 6 ).GE.THRESH ) THEN
  570. IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
  571. $ CALL ALADHD( NOUT, PATH )
  572. WRITE( NOUT, FMT = 9998 )'ZGTSVX', FACT, TRANS, N,
  573. $ IMAT, K, RESULT( K )
  574. NFAIL = NFAIL + 1
  575. END IF
  576. NRUN = NRUN + NT - K1 + 2
  577. *
  578. 110 CONTINUE
  579. 120 CONTINUE
  580. 130 CONTINUE
  581. 140 CONTINUE
  582. *
  583. * Print a summary of the results.
  584. *
  585. CALL ALASVM( PATH, NOUT, NFAIL, NRUN, NERRS )
  586. *
  587. 9999 FORMAT( 1X, A, ', N =', I5, ', type ', I2, ', test ', I2,
  588. $ ', ratio = ', G12.5 )
  589. 9998 FORMAT( 1X, A, ', FACT=''', A1, ''', TRANS=''', A1, ''', N =',
  590. $ I5, ', type ', I2, ', test ', I2, ', ratio = ', G12.5 )
  591. RETURN
  592. *
  593. * End of ZDRVGT
  594. *
  595. END