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

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