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.

serrgex.f 20 kB

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