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.

ddrvgt.f 19 kB

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