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.

cerrgex.f 21 kB

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