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.

zerrgex.f 21 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  1. *> \brief \b ZERRGEX
  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 ZERRGE( PATH, NUNIT )
  12. *
  13. * .. Scalar Arguments ..
  14. * CHARACTER*3 PATH
  15. * INTEGER NUNIT
  16. * ..
  17. *
  18. *
  19. *> \par Purpose:
  20. * =============
  21. *>
  22. *> \verbatim
  23. *>
  24. *> ZERRGE tests the error exits for the COMPLEX*16 routines
  25. *> for general matrices.
  26. *>
  27. *> Note that this file is used only when the XBLAS are available,
  28. *> otherwise zerrge.f defines this subroutine.
  29. *> \endverbatim
  30. *
  31. * Arguments:
  32. * ==========
  33. *
  34. *> \param[in] PATH
  35. *> \verbatim
  36. *> PATH is CHARACTER*3
  37. *> The LAPACK path name for the routines to be tested.
  38. *> \endverbatim
  39. *>
  40. *> \param[in] NUNIT
  41. *> \verbatim
  42. *> NUNIT is INTEGER
  43. *> The unit number for output.
  44. *> \endverbatim
  45. *
  46. * Authors:
  47. * ========
  48. *
  49. *> \author Univ. of Tennessee
  50. *> \author Univ. of California Berkeley
  51. *> \author Univ. of Colorado Denver
  52. *> \author NAG Ltd.
  53. *
  54. *> \date December 2016
  55. *
  56. *> \ingroup complex16_lin
  57. *
  58. * =====================================================================
  59. SUBROUTINE ZERRGE( PATH, NUNIT )
  60. *
  61. * -- LAPACK test routine (version 3.7.0) --
  62. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  63. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  64. * December 2016
  65. *
  66. * .. Scalar Arguments ..
  67. CHARACTER*3 PATH
  68. INTEGER NUNIT
  69. * ..
  70. *
  71. * =====================================================================
  72. *
  73. * .. Parameters ..
  74. INTEGER NMAX
  75. PARAMETER ( NMAX = 4 )
  76. * ..
  77. * .. Local Scalars ..
  78. CHARACTER EQ
  79. CHARACTER*2 C2
  80. INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
  81. DOUBLE PRECISION ANRM, CCOND, RCOND, BERR
  82. * ..
  83. * .. Local Arrays ..
  84. INTEGER IP( NMAX )
  85. DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX ), CS( NMAX ),
  86. $ RS( NMAX )
  87. COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
  88. $ W( 2*NMAX ), X( NMAX ), ERR_BNDS_N( NMAX, 3 ),
  89. $ ERR_BNDS_C( NMAX, 3 ), PARAMS
  90. * ..
  91. * .. External Functions ..
  92. LOGICAL LSAMEN
  93. EXTERNAL LSAMEN
  94. * ..
  95. * .. External Subroutines ..
  96. EXTERNAL ALAESM, CHKXER, ZGBCON, ZGBEQU, ZGBRFS, ZGBTF2,
  97. $ ZGBTRF, ZGBTRS, ZGECON, ZGEEQU, ZGERFS, ZGETF2,
  98. $ ZGETRF, ZGETRI, ZGETRS, ZGEEQUB, ZGERFSX,
  99. $ ZGBEQUB, ZGBRFSX
  100. * ..
  101. * .. Scalars in Common ..
  102. LOGICAL LERR, OK
  103. CHARACTER*32 SRNAMT
  104. INTEGER INFOT, NOUT
  105. * ..
  106. * .. Common blocks ..
  107. COMMON / INFOC / INFOT, NOUT, OK, LERR
  108. COMMON / SRNAMC / SRNAMT
  109. * ..
  110. * .. Intrinsic Functions ..
  111. INTRINSIC DBLE, DCMPLX
  112. * ..
  113. * .. Executable Statements ..
  114. *
  115. NOUT = NUNIT
  116. WRITE( NOUT, FMT = * )
  117. C2 = PATH( 2: 3 )
  118. *
  119. * Set the variables to innocuous values.
  120. *
  121. DO 20 J = 1, NMAX
  122. DO 10 I = 1, NMAX
  123. A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
  124. $ -1.D0 / DBLE( I+J ) )
  125. AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
  126. $ -1.D0 / DBLE( I+J ) )
  127. 10 CONTINUE
  128. B( J ) = 0.D0
  129. R1( J ) = 0.D0
  130. R2( J ) = 0.D0
  131. W( J ) = 0.D0
  132. X( J ) = 0.D0
  133. CS( J ) = 0.D0
  134. RS( J ) = 0.D0
  135. IP( J ) = J
  136. 20 CONTINUE
  137. OK = .TRUE.
  138. *
  139. * Test error exits of the routines that use the LU decomposition
  140. * of a general matrix.
  141. *
  142. IF( LSAMEN( 2, C2, 'GE' ) ) THEN
  143. *
  144. * ZGETRF
  145. *
  146. SRNAMT = 'ZGETRF'
  147. INFOT = 1
  148. CALL ZGETRF( -1, 0, A, 1, IP, INFO )
  149. CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
  150. INFOT = 2
  151. CALL ZGETRF( 0, -1, A, 1, IP, INFO )
  152. CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
  153. INFOT = 4
  154. CALL ZGETRF( 2, 1, A, 1, IP, INFO )
  155. CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
  156. *
  157. * ZGETF2
  158. *
  159. SRNAMT = 'ZGETF2'
  160. INFOT = 1
  161. CALL ZGETF2( -1, 0, A, 1, IP, INFO )
  162. CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
  163. INFOT = 2
  164. CALL ZGETF2( 0, -1, A, 1, IP, INFO )
  165. CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
  166. INFOT = 4
  167. CALL ZGETF2( 2, 1, A, 1, IP, INFO )
  168. CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
  169. *
  170. * ZGETRI
  171. *
  172. SRNAMT = 'ZGETRI'
  173. INFOT = 1
  174. CALL ZGETRI( -1, A, 1, IP, W, 1, INFO )
  175. CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
  176. INFOT = 3
  177. CALL ZGETRI( 2, A, 1, IP, W, 2, INFO )
  178. CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
  179. INFOT = 6
  180. CALL ZGETRI( 2, A, 2, IP, W, 1, INFO )
  181. CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
  182. *
  183. * ZGETRS
  184. *
  185. SRNAMT = 'ZGETRS'
  186. INFOT = 1
  187. CALL ZGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
  188. CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
  189. INFOT = 2
  190. CALL ZGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
  191. CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
  192. INFOT = 3
  193. CALL ZGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
  194. CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
  195. INFOT = 5
  196. CALL ZGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
  197. CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
  198. INFOT = 8
  199. CALL ZGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
  200. CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
  201. *
  202. * ZGERFS
  203. *
  204. SRNAMT = 'ZGERFS'
  205. INFOT = 1
  206. CALL ZGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
  207. $ R, INFO )
  208. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  209. INFOT = 2
  210. CALL ZGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
  211. $ W, R, INFO )
  212. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  213. INFOT = 3
  214. CALL ZGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
  215. $ W, R, INFO )
  216. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  217. INFOT = 5
  218. CALL ZGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
  219. $ R, INFO )
  220. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  221. INFOT = 7
  222. CALL ZGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
  223. $ R, INFO )
  224. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  225. INFOT = 10
  226. CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
  227. $ R, INFO )
  228. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  229. INFOT = 12
  230. CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
  231. $ R, INFO )
  232. CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
  233. *
  234. * ZGERFSX
  235. *
  236. N_ERR_BNDS = 3
  237. NPARAMS = 0
  238. SRNAMT = 'ZGERFSX'
  239. INFOT = 1
  240. CALL ZGERFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
  241. $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  242. $ NPARAMS, PARAMS, W, R, INFO )
  243. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  244. INFOT = 2
  245. EQ = '/'
  246. CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
  247. $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  248. $ NPARAMS, PARAMS, W, R, INFO )
  249. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  250. INFOT = 3
  251. EQ = 'R'
  252. CALL ZGERFSX( 'N', EQ, -1, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
  253. $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  254. $ NPARAMS, PARAMS, W, R, INFO )
  255. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  256. INFOT = 4
  257. CALL ZGERFSX( 'N', EQ, 0, -1, A, 1, AF, 1, IP, RS, CS, B, 1, X,
  258. $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  259. $ NPARAMS, PARAMS, W, R, INFO )
  260. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  261. INFOT = 6
  262. CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
  263. $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  264. $ NPARAMS, PARAMS, W, R, INFO )
  265. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  266. INFOT = 8
  267. CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 1, IP, RS, CS, B, 2, X,
  268. $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  269. $ NPARAMS, PARAMS, W, R, INFO )
  270. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  271. INFOT = 13
  272. EQ = 'C'
  273. CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 1, X,
  274. $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  275. $ NPARAMS, PARAMS, W, R, INFO )
  276. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  277. INFOT = 15
  278. CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 2, X,
  279. $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
  280. $ NPARAMS, PARAMS, W, R, INFO )
  281. CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
  282. *
  283. * ZGECON
  284. *
  285. SRNAMT = 'ZGECON'
  286. INFOT = 1
  287. CALL ZGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
  288. CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
  289. INFOT = 2
  290. CALL ZGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO )
  291. CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
  292. INFOT = 4
  293. CALL ZGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO )
  294. CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
  295. *
  296. * ZGEEQU
  297. *
  298. SRNAMT = 'ZGEEQU'
  299. INFOT = 1
  300. CALL ZGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  301. CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
  302. INFOT = 2
  303. CALL ZGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  304. CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
  305. INFOT = 4
  306. CALL ZGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  307. CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
  308. *
  309. * ZGEEQUB
  310. *
  311. SRNAMT = 'ZGEEQUB'
  312. INFOT = 1
  313. CALL ZGEEQUB( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  314. CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
  315. INFOT = 2
  316. CALL ZGEEQUB( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  317. CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
  318. INFOT = 4
  319. CALL ZGEEQUB( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
  320. CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
  321. *
  322. * Test error exits of the routines that use the LU decomposition
  323. * of a general band matrix.
  324. *
  325. ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
  326. *
  327. * ZGBTRF
  328. *
  329. SRNAMT = 'ZGBTRF'
  330. INFOT = 1
  331. CALL ZGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
  332. CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
  333. INFOT = 2
  334. CALL ZGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
  335. CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
  336. INFOT = 3
  337. CALL ZGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
  338. CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
  339. INFOT = 4
  340. CALL ZGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
  341. CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
  342. INFOT = 6
  343. CALL ZGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
  344. CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
  345. *
  346. * ZGBTF2
  347. *
  348. SRNAMT = 'ZGBTF2'
  349. INFOT = 1
  350. CALL ZGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
  351. CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
  352. INFOT = 2
  353. CALL ZGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
  354. CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
  355. INFOT = 3
  356. CALL ZGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
  357. CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
  358. INFOT = 4
  359. CALL ZGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
  360. CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
  361. INFOT = 6
  362. CALL ZGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
  363. CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
  364. *
  365. * ZGBTRS
  366. *
  367. SRNAMT = 'ZGBTRS'
  368. INFOT = 1
  369. CALL ZGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
  370. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  371. INFOT = 2
  372. CALL ZGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
  373. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  374. INFOT = 3
  375. CALL ZGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
  376. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  377. INFOT = 4
  378. CALL ZGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
  379. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  380. INFOT = 5
  381. CALL ZGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
  382. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  383. INFOT = 7
  384. CALL ZGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
  385. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  386. INFOT = 10
  387. CALL ZGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
  388. CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
  389. *
  390. * ZGBRFS
  391. *
  392. SRNAMT = 'ZGBRFS'
  393. INFOT = 1
  394. CALL ZGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
  395. $ R2, W, R, INFO )
  396. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  397. INFOT = 2
  398. CALL ZGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
  399. $ R2, W, R, INFO )
  400. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  401. INFOT = 3
  402. CALL ZGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
  403. $ R2, W, R, INFO )
  404. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  405. INFOT = 4
  406. CALL ZGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
  407. $ R2, W, R, INFO )
  408. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  409. INFOT = 5
  410. CALL ZGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
  411. $ R2, W, R, INFO )
  412. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  413. INFOT = 7
  414. CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
  415. $ R2, W, R, INFO )
  416. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  417. INFOT = 9
  418. CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
  419. $ R2, W, R, INFO )
  420. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  421. INFOT = 12
  422. CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
  423. $ R2, W, R, INFO )
  424. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  425. INFOT = 14
  426. CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
  427. $ R2, W, R, INFO )
  428. CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
  429. *
  430. * ZGBRFSX
  431. *
  432. N_ERR_BNDS = 3
  433. NPARAMS = 0
  434. SRNAMT = 'ZGBRFSX'
  435. INFOT = 1
  436. CALL ZGBRFSX( '/', EQ, 0, 0, 0, 0, A, 1, AF, 1, IP, RS, CS, B,
  437. $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  438. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  439. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  440. INFOT = 2
  441. EQ = '/'
  442. CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
  443. $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  444. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  445. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  446. INFOT = 3
  447. EQ = 'R'
  448. CALL ZGBRFSX( 'N', EQ, -1, 1, 1, 0, A, 1, AF, 1, IP, RS, CS, B,
  449. $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  450. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  451. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  452. INFOT = 4
  453. EQ = 'R'
  454. CALL ZGBRFSX( 'N', EQ, 2, -1, 1, 1, A, 3, AF, 4, IP, RS, CS, B,
  455. $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  456. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  457. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  458. INFOT = 5
  459. EQ = 'R'
  460. CALL ZGBRFSX( 'N', EQ, 2, 1, -1, 1, A, 3, AF, 4, IP, RS, CS, B,
  461. $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  462. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  463. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  464. INFOT = 6
  465. CALL ZGBRFSX( 'N', EQ, 0, 0, 0, -1, A, 1, AF, 1, IP, RS, CS, B,
  466. $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  467. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  468. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  469. INFOT = 8
  470. CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
  471. $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  472. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  473. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  474. INFOT = 10
  475. CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 3, IP, RS, CS, B,
  476. $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  477. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  478. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  479. INFOT = 13
  480. EQ = 'C'
  481. CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
  482. $ 1, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  483. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  484. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  485. INFOT = 15
  486. CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
  487. $ 2, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
  488. $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
  489. CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
  490. *
  491. * ZGBCON
  492. *
  493. SRNAMT = 'ZGBCON'
  494. INFOT = 1
  495. CALL ZGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
  496. CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
  497. INFOT = 2
  498. CALL ZGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
  499. CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
  500. INFOT = 3
  501. CALL ZGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
  502. CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
  503. INFOT = 4
  504. CALL ZGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO )
  505. CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
  506. INFOT = 6
  507. CALL ZGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO )
  508. CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
  509. *
  510. * ZGBEQU
  511. *
  512. SRNAMT = 'ZGBEQU'
  513. INFOT = 1
  514. CALL ZGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  515. $ INFO )
  516. CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
  517. INFOT = 2
  518. CALL ZGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  519. $ INFO )
  520. CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
  521. INFOT = 3
  522. CALL ZGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  523. $ INFO )
  524. CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
  525. INFOT = 4
  526. CALL ZGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
  527. $ INFO )
  528. CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
  529. INFOT = 6
  530. CALL ZGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
  531. $ INFO )
  532. CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
  533. *
  534. * ZGBEQUB
  535. *
  536. SRNAMT = 'ZGBEQUB'
  537. INFOT = 1
  538. CALL ZGBEQUB( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  539. $ INFO )
  540. CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
  541. INFOT = 2
  542. CALL ZGBEQUB( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  543. $ INFO )
  544. CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
  545. INFOT = 3
  546. CALL ZGBEQUB( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
  547. $ INFO )
  548. CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
  549. INFOT = 4
  550. CALL ZGBEQUB( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
  551. $ INFO )
  552. CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
  553. INFOT = 6
  554. CALL ZGBEQUB( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
  555. $ INFO )
  556. CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
  557. END IF
  558. *
  559. * Print a summary line.
  560. *
  561. CALL ALAESM( PATH, OK, NOUT )
  562. *
  563. RETURN
  564. *
  565. * End of ZERRGE
  566. *
  567. END