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.

cerrgg.f 44 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
  1. *> \brief \b CERRGG
  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 CERRGG( 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. *> CERRGG tests the error exits for CGGES, CGGESX, CGGEV, CGGEVX,
  25. *> CGGGLM, CGGHRD, CGGLSE, CGGQRF, CGGRQF, CGGSVD, CGGSVP, CHGEQZ,
  26. *> CTGEVC, CTGEXC, CTGSEN, CTGSJA, CTGSNA, CTGSYL and CUNCSD.
  27. *> \endverbatim
  28. *
  29. * Arguments:
  30. * ==========
  31. *
  32. *> \param[in] PATH
  33. *> \verbatim
  34. *> PATH is CHARACTER*3
  35. *> The LAPACK path name for the routines to be tested.
  36. *> \endverbatim
  37. *>
  38. *> \param[in] NUNIT
  39. *> \verbatim
  40. *> NUNIT is INTEGER
  41. *> The unit number for output.
  42. *> \endverbatim
  43. *
  44. * Authors:
  45. * ========
  46. *
  47. *> \author Univ. of Tennessee
  48. *> \author Univ. of California Berkeley
  49. *> \author Univ. of Colorado Denver
  50. *> \author NAG Ltd.
  51. *
  52. *> \date November 2011
  53. *
  54. *> \ingroup complex_eig
  55. *
  56. * =====================================================================
  57. SUBROUTINE CERRGG( PATH, NUNIT )
  58. *
  59. * -- LAPACK test routine (version 3.4.0) --
  60. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  61. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  62. * November 2011
  63. *
  64. * .. Scalar Arguments ..
  65. CHARACTER*3 PATH
  66. INTEGER NUNIT
  67. * ..
  68. *
  69. * =====================================================================
  70. *
  71. * .. Parameters ..
  72. INTEGER NMAX, LW
  73. PARAMETER ( NMAX = 3, LW = 6*NMAX )
  74. REAL ONE, ZERO
  75. PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 )
  76. * ..
  77. * .. Local Scalars ..
  78. CHARACTER*2 C2
  79. INTEGER DUMMYK, DUMMYL, I, IFST, IHI, ILO, ILST, INFO,
  80. $ J, M, NCYCLE, NT, SDIM
  81. REAL ANRM, BNRM, DIF, SCALE, TOLA, TOLB
  82. * ..
  83. * .. Local Arrays ..
  84. LOGICAL BW( NMAX ), SEL( NMAX )
  85. INTEGER IW( LW )
  86. REAL LS( NMAX ), R1( NMAX ), R2( NMAX ),
  87. $ RCE( NMAX ), RCV( NMAX ), RS( NMAX ), RW( LW )
  88. COMPLEX A( NMAX, NMAX ), ALPHA( NMAX ),
  89. $ B( NMAX, NMAX ), BETA( NMAX ), Q( NMAX, NMAX ),
  90. $ TAU( NMAX ), U( NMAX, NMAX ), V( NMAX, NMAX ),
  91. $ W( LW ), Z( NMAX, NMAX )
  92. * ..
  93. * .. External Functions ..
  94. LOGICAL CLCTES, CLCTSX, LSAMEN
  95. EXTERNAL CLCTES, CLCTSX, LSAMEN
  96. * ..
  97. * .. External Subroutines ..
  98. EXTERNAL CGGES, CGGESX, CGGEV, CGGEVX, CGGGLM, CGGHRD,
  99. $ CGGLSE, CGGQRF, CGGRQF, CGGSVD, CGGSVP, CHGEQZ,
  100. $ CHKXER, CTGEVC, CTGEXC, CTGSEN, CTGSJA, CTGSNA,
  101. $ CTGSYL, CUNCSD
  102. * ..
  103. * .. Scalars in Common ..
  104. LOGICAL LERR, OK
  105. CHARACTER*32 SRNAMT
  106. INTEGER INFOT, NOUT
  107. * ..
  108. * .. Common blocks ..
  109. COMMON / INFOC / INFOT, NOUT, OK, LERR
  110. COMMON / SRNAMC / SRNAMT
  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. SEL( J ) = .TRUE.
  122. DO 10 I = 1, NMAX
  123. A( I, J ) = ZERO
  124. B( I, J ) = ZERO
  125. 10 CONTINUE
  126. 20 CONTINUE
  127. DO 30 I = 1, NMAX
  128. A( I, I ) = ONE
  129. B( I, I ) = ONE
  130. 30 CONTINUE
  131. OK = .TRUE.
  132. TOLA = 1.0E0
  133. TOLB = 1.0E0
  134. IFST = 1
  135. ILST = 1
  136. NT = 0
  137. *
  138. * Test error exits for the GG path.
  139. *
  140. IF( LSAMEN( 2, C2, 'GG' ) ) THEN
  141. *
  142. * CGGHRD
  143. *
  144. SRNAMT = 'CGGHRD'
  145. INFOT = 1
  146. CALL CGGHRD( '/', 'N', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  147. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  148. INFOT = 2
  149. CALL CGGHRD( 'N', '/', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  150. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  151. INFOT = 3
  152. CALL CGGHRD( 'N', 'N', -1, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  153. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  154. INFOT = 4
  155. CALL CGGHRD( 'N', 'N', 0, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  156. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  157. INFOT = 5
  158. CALL CGGHRD( 'N', 'N', 0, 1, 1, A, 1, B, 1, Q, 1, Z, 1, INFO )
  159. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  160. INFOT = 7
  161. CALL CGGHRD( 'N', 'N', 2, 1, 1, A, 1, B, 2, Q, 1, Z, 1, INFO )
  162. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  163. INFOT = 9
  164. CALL CGGHRD( 'N', 'N', 2, 1, 1, A, 2, B, 1, Q, 1, Z, 1, INFO )
  165. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  166. INFOT = 11
  167. CALL CGGHRD( 'V', 'N', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
  168. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  169. INFOT = 13
  170. CALL CGGHRD( 'N', 'V', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
  171. CALL CHKXER( 'CGGHRD', INFOT, NOUT, LERR, OK )
  172. NT = NT + 9
  173. *
  174. * CHGEQZ
  175. *
  176. SRNAMT = 'CHGEQZ'
  177. INFOT = 1
  178. CALL CHGEQZ( '/', 'N', 'N', 0, 1, 0, A, 1, B, 1, ALPHA, BETA,
  179. $ Q, 1, Z, 1, W, 1, RW, INFO )
  180. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  181. INFOT = 2
  182. CALL CHGEQZ( 'E', '/', 'N', 0, 1, 0, A, 1, B, 1, ALPHA, BETA,
  183. $ Q, 1, Z, 1, W, 1, RW, INFO )
  184. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  185. INFOT = 3
  186. CALL CHGEQZ( 'E', 'N', '/', 0, 1, 0, A, 1, B, 1, ALPHA, BETA,
  187. $ Q, 1, Z, 1, W, 1, RW, INFO )
  188. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  189. INFOT = 4
  190. CALL CHGEQZ( 'E', 'N', 'N', -1, 0, 0, A, 1, B, 1, ALPHA, BETA,
  191. $ Q, 1, Z, 1, W, 1, RW, INFO )
  192. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  193. INFOT = 5
  194. CALL CHGEQZ( 'E', 'N', 'N', 0, 0, 0, A, 1, B, 1, ALPHA, BETA,
  195. $ Q, 1, Z, 1, W, 1, RW, INFO )
  196. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  197. INFOT = 6
  198. CALL CHGEQZ( 'E', 'N', 'N', 0, 1, 1, A, 1, B, 1, ALPHA, BETA,
  199. $ Q, 1, Z, 1, W, 1, RW, INFO )
  200. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  201. INFOT = 8
  202. CALL CHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 1, B, 2, ALPHA, BETA,
  203. $ Q, 1, Z, 1, W, 1, RW, INFO )
  204. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  205. INFOT = 10
  206. CALL CHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 2, B, 1, ALPHA, BETA,
  207. $ Q, 1, Z, 1, W, 1, RW, INFO )
  208. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  209. INFOT = 14
  210. CALL CHGEQZ( 'E', 'V', 'N', 2, 1, 1, A, 2, B, 2, ALPHA, BETA,
  211. $ Q, 1, Z, 1, W, 1, RW, INFO )
  212. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  213. INFOT = 16
  214. CALL CHGEQZ( 'E', 'N', 'V', 2, 1, 1, A, 2, B, 2, ALPHA, BETA,
  215. $ Q, 1, Z, 1, W, 1, RW, INFO )
  216. CALL CHKXER( 'CHGEQZ', INFOT, NOUT, LERR, OK )
  217. NT = NT + 10
  218. *
  219. * CTGEVC
  220. *
  221. SRNAMT = 'CTGEVC'
  222. INFOT = 1
  223. CALL CTGEVC( '/', 'A', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
  224. $ RW, INFO )
  225. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  226. INFOT = 2
  227. CALL CTGEVC( 'R', '/', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
  228. $ RW, INFO )
  229. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  230. INFOT = 4
  231. CALL CTGEVC( 'R', 'A', SEL, -1, A, 1, B, 1, Q, 1, Z, 1, 0, M,
  232. $ W, RW, INFO )
  233. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  234. INFOT = 6
  235. CALL CTGEVC( 'R', 'A', SEL, 2, A, 1, B, 2, Q, 1, Z, 2, 0, M, W,
  236. $ RW, INFO )
  237. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  238. INFOT = 8
  239. CALL CTGEVC( 'R', 'A', SEL, 2, A, 2, B, 1, Q, 1, Z, 2, 0, M, W,
  240. $ RW, INFO )
  241. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  242. INFOT = 10
  243. CALL CTGEVC( 'L', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
  244. $ RW, INFO )
  245. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  246. INFOT = 12
  247. CALL CTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
  248. $ RW, INFO )
  249. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  250. INFOT = 13
  251. CALL CTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 2, 1, M, W,
  252. $ RW, INFO )
  253. CALL CHKXER( 'CTGEVC', INFOT, NOUT, LERR, OK )
  254. NT = NT + 8
  255. *
  256. * Test error exits for the GSV path.
  257. *
  258. ELSE IF( LSAMEN( 3, PATH, 'GSV' ) ) THEN
  259. *
  260. * CGGSVD
  261. *
  262. SRNAMT = 'CGGSVD'
  263. INFOT = 1
  264. CALL CGGSVD( '/', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  265. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  266. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  267. INFOT = 2
  268. CALL CGGSVD( 'N', '/', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  269. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  270. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  271. INFOT = 3
  272. CALL CGGSVD( 'N', 'N', '/', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  273. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  274. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  275. INFOT = 4
  276. CALL CGGSVD( 'N', 'N', 'N', -1, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  277. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  278. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  279. INFOT = 5
  280. CALL CGGSVD( 'N', 'N', 'N', 0, -1, 0, DUMMYK, DUMMYL, A, 1, B,
  281. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  282. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  283. INFOT = 6
  284. CALL CGGSVD( 'N', 'N', 'N', 0, 0, -1, DUMMYK, DUMMYL, A, 1, B,
  285. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  286. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  287. INFOT = 10
  288. CALL CGGSVD( 'N', 'N', 'N', 2, 1, 1, DUMMYK, DUMMYL, A, 1, B,
  289. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  290. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  291. INFOT = 12
  292. CALL CGGSVD( 'N', 'N', 'N', 1, 1, 2, DUMMYK, DUMMYL, A, 1, B,
  293. $ 1, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  294. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  295. INFOT = 16
  296. CALL CGGSVD( 'U', 'N', 'N', 2, 2, 2, DUMMYK, DUMMYL, A, 2, B,
  297. $ 2, R1, R2, U, 1, V, 1, Q, 1, W, RW, IW, INFO )
  298. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  299. INFOT = 18
  300. CALL CGGSVD( 'N', 'V', 'N', 2, 2, 2, DUMMYK, DUMMYL, A, 2, B,
  301. $ 2, R1, R2, U, 2, V, 1, Q, 1, W, RW, IW, INFO )
  302. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  303. INFOT = 20
  304. CALL CGGSVD( 'N', 'N', 'Q', 2, 2, 2, DUMMYK, DUMMYL, A, 2, B,
  305. $ 2, R1, R2, U, 2, V, 2, Q, 1, W, RW, IW, INFO )
  306. CALL CHKXER( 'CGGSVD', INFOT, NOUT, LERR, OK )
  307. NT = NT + 11
  308. *
  309. * CGGSVP
  310. *
  311. SRNAMT = 'CGGSVP'
  312. INFOT = 1
  313. CALL CGGSVP( '/', 'N', 'N', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
  314. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  315. $ INFO )
  316. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  317. INFOT = 2
  318. CALL CGGSVP( 'N', '/', 'N', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
  319. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  320. $ INFO )
  321. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  322. INFOT = 3
  323. CALL CGGSVP( 'N', 'N', '/', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
  324. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  325. $ INFO )
  326. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  327. INFOT = 4
  328. CALL CGGSVP( 'N', 'N', 'N', -1, 0, 0, A, 1, B, 1, TOLA, TOLB,
  329. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  330. $ INFO )
  331. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  332. INFOT = 5
  333. CALL CGGSVP( 'N', 'N', 'N', 0, -1, 0, A, 1, B, 1, TOLA, TOLB,
  334. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  335. $ INFO )
  336. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  337. INFOT = 6
  338. CALL CGGSVP( 'N', 'N', 'N', 0, 0, -1, A, 1, B, 1, TOLA, TOLB,
  339. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  340. $ INFO )
  341. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  342. INFOT = 8
  343. CALL CGGSVP( 'N', 'N', 'N', 2, 1, 1, A, 1, B, 1, TOLA, TOLB,
  344. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  345. $ INFO )
  346. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  347. INFOT = 10
  348. CALL CGGSVP( 'N', 'N', 'N', 1, 2, 1, A, 1, B, 1, TOLA, TOLB,
  349. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  350. $ INFO )
  351. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  352. INFOT = 16
  353. CALL CGGSVP( 'U', 'N', 'N', 2, 2, 2, A, 2, B, 2, TOLA, TOLB,
  354. $ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, RW, TAU, W,
  355. $ INFO )
  356. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  357. INFOT = 18
  358. CALL CGGSVP( 'N', 'V', 'N', 2, 2, 2, A, 2, B, 2, TOLA, TOLB,
  359. $ DUMMYK, DUMMYL, U, 2, V, 1, Q, 1, IW, RW, TAU, W,
  360. $ INFO )
  361. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  362. INFOT = 20
  363. CALL CGGSVP( 'N', 'N', 'Q', 2, 2, 2, A, 2, B, 2, TOLA, TOLB,
  364. $ DUMMYK, DUMMYL, U, 2, V, 2, Q, 1, IW, RW, TAU, W,
  365. $ INFO )
  366. CALL CHKXER( 'CGGSVP', INFOT, NOUT, LERR, OK )
  367. NT = NT + 11
  368. *
  369. * CTGSJA
  370. *
  371. SRNAMT = 'CTGSJA'
  372. INFOT = 1
  373. CALL CTGSJA( '/', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  374. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  375. $ NCYCLE, INFO )
  376. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  377. INFOT = 2
  378. CALL CTGSJA( 'N', '/', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  379. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  380. $ NCYCLE, INFO )
  381. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  382. INFOT = 3
  383. CALL CTGSJA( 'N', 'N', '/', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  384. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  385. $ NCYCLE, INFO )
  386. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  387. INFOT = 4
  388. CALL CTGSJA( 'N', 'N', 'N', -1, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  389. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  390. $ NCYCLE, INFO )
  391. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  392. INFOT = 5
  393. CALL CTGSJA( 'N', 'N', 'N', 0, -1, 0, DUMMYK, DUMMYL, A, 1, B,
  394. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  395. $ NCYCLE, INFO )
  396. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  397. INFOT = 6
  398. CALL CTGSJA( 'N', 'N', 'N', 0, 0, -1, DUMMYK, DUMMYL, A, 1, B,
  399. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  400. $ NCYCLE, INFO )
  401. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  402. INFOT = 10
  403. CALL CTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 0, B,
  404. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  405. $ NCYCLE, INFO )
  406. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  407. INFOT = 12
  408. CALL CTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  409. $ 0, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
  410. $ NCYCLE, INFO )
  411. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  412. INFOT = 18
  413. CALL CTGSJA( 'U', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  414. $ 1, TOLA, TOLB, R1, R2, U, 0, V, 1, Q, 1, W,
  415. $ NCYCLE, INFO )
  416. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  417. INFOT = 20
  418. CALL CTGSJA( 'N', 'V', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  419. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 0, Q, 1, W,
  420. $ NCYCLE, INFO )
  421. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  422. INFOT = 22
  423. CALL CTGSJA( 'N', 'N', 'Q', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
  424. $ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 0, W,
  425. $ NCYCLE, INFO )
  426. CALL CHKXER( 'CTGSJA', INFOT, NOUT, LERR, OK )
  427. NT = NT + 11
  428. *
  429. * Test error exits for the GLM path.
  430. *
  431. ELSE IF( LSAMEN( 3, PATH, 'GLM' ) ) THEN
  432. *
  433. * CGGGLM
  434. *
  435. SRNAMT = 'CGGGLM'
  436. INFOT = 1
  437. CALL CGGGLM( -1, 0, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  438. $ INFO )
  439. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  440. INFOT = 2
  441. CALL CGGGLM( 0, -1, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  442. $ INFO )
  443. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  444. INFOT = 2
  445. CALL CGGGLM( 0, 1, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  446. $ INFO )
  447. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  448. INFOT = 3
  449. CALL CGGGLM( 0, 0, -1, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  450. $ INFO )
  451. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  452. INFOT = 3
  453. CALL CGGGLM( 1, 0, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  454. $ INFO )
  455. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  456. INFOT = 5
  457. CALL CGGGLM( 0, 0, 0, A, 0, B, 1, TAU, ALPHA, BETA, W, LW,
  458. $ INFO )
  459. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  460. INFOT = 7
  461. CALL CGGGLM( 0, 0, 0, A, 1, B, 0, TAU, ALPHA, BETA, W, LW,
  462. $ INFO )
  463. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  464. INFOT = 12
  465. CALL CGGGLM( 1, 1, 1, A, 1, B, 1, TAU, ALPHA, BETA, W, 1,
  466. $ INFO )
  467. CALL CHKXER( 'CGGGLM', INFOT, NOUT, LERR, OK )
  468. NT = NT + 8
  469. *
  470. * Test error exits for the LSE path.
  471. *
  472. ELSE IF( LSAMEN( 3, PATH, 'LSE' ) ) THEN
  473. *
  474. * CGGLSE
  475. *
  476. SRNAMT = 'CGGLSE'
  477. INFOT = 1
  478. CALL CGGLSE( -1, 0, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  479. $ INFO )
  480. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  481. INFOT = 2
  482. CALL CGGLSE( 0, -1, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  483. $ INFO )
  484. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  485. INFOT = 3
  486. CALL CGGLSE( 0, 0, -1, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  487. $ INFO )
  488. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  489. INFOT = 3
  490. CALL CGGLSE( 0, 0, 1, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  491. $ INFO )
  492. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  493. INFOT = 3
  494. CALL CGGLSE( 0, 1, 0, A, 1, B, 1, TAU, ALPHA, BETA, W, LW,
  495. $ INFO )
  496. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  497. INFOT = 5
  498. CALL CGGLSE( 0, 0, 0, A, 0, B, 1, TAU, ALPHA, BETA, W, LW,
  499. $ INFO )
  500. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  501. INFOT = 7
  502. CALL CGGLSE( 0, 0, 0, A, 1, B, 0, TAU, ALPHA, BETA, W, LW,
  503. $ INFO )
  504. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  505. INFOT = 12
  506. CALL CGGLSE( 1, 1, 1, A, 1, B, 1, TAU, ALPHA, BETA, W, 1,
  507. $ INFO )
  508. CALL CHKXER( 'CGGLSE', INFOT, NOUT, LERR, OK )
  509. NT = NT + 8
  510. *
  511. * Test error exits for the CSD path.
  512. *
  513. ELSE IF( LSAMEN( 3, PATH, 'CSD' ) ) THEN
  514. *
  515. * CUNCSD
  516. *
  517. SRNAMT = 'CUNCSD'
  518. INFOT = 7
  519. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  520. $ -1, 0, 0, A, 1, A,
  521. $ 1, A, 1, A, 1, A,
  522. $ A, 1, A, 1, A, 1, A,
  523. $ 1, W, LW, RW, LW, IW, INFO )
  524. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  525. INFOT = 8
  526. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  527. $ 1, -1, 0, A, 1, A,
  528. $ 1, A, 1, A, 1, A,
  529. $ A, 1, A, 1, A, 1, A,
  530. $ 1, W, LW, RW, LW, IW, INFO )
  531. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  532. INFOT = 9
  533. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  534. $ 1, 1, -1, A, 1, A,
  535. $ 1, A, 1, A, 1, A,
  536. $ A, 1, A, 1, A, 1, A,
  537. $ 1, W, LW, RW, LW, IW, INFO )
  538. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  539. INFOT = 11
  540. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  541. $ 1, 1, 1, A, -1, A,
  542. $ 1, A, 1, A, 1, A,
  543. $ A, 1, A, 1, A, 1, A,
  544. $ 1, W, LW, RW, LW, IW, INFO )
  545. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  546. INFOT = 20
  547. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  548. $ 1, 1, 1, A, 1, A,
  549. $ 1, A, 1, A, 1, A,
  550. $ A, -1, A, 1, A, 1, A,
  551. $ 1, W, LW, RW, LW, IW, INFO )
  552. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  553. INFOT = 22
  554. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  555. $ 1, 1, 1, A, 1, A,
  556. $ 1, A, 1, A, 1, A,
  557. $ A, 1, A, -1, A, 1, A,
  558. $ 1, W, LW, RW, LW, IW, INFO )
  559. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  560. INFOT = 24
  561. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  562. $ 1, 1, 1, A, 1, A,
  563. $ 1, A, 1, A, 1, A,
  564. $ A, 1, A, 1, A, -1, A,
  565. $ 1, W, LW, RW, LW, IW, INFO )
  566. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  567. INFOT = 26
  568. CALL CUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
  569. $ 1, 1, 1, A, 1, A,
  570. $ 1, A, 1, A, 1, A,
  571. $ A, 1, A, 1, A, 1, A,
  572. $ -1, W, LW, RW, LW, IW, INFO )
  573. CALL CHKXER( 'CUNCSD', INFOT, NOUT, LERR, OK )
  574. NT = NT + 8
  575. *
  576. * Test error exits for the GQR path.
  577. *
  578. ELSE IF( LSAMEN( 3, PATH, 'GQR' ) ) THEN
  579. *
  580. * CGGQRF
  581. *
  582. SRNAMT = 'CGGQRF'
  583. INFOT = 1
  584. CALL CGGQRF( -1, 0, 0, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  585. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  586. INFOT = 2
  587. CALL CGGQRF( 0, -1, 0, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  588. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  589. INFOT = 3
  590. CALL CGGQRF( 0, 0, -1, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  591. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  592. INFOT = 5
  593. CALL CGGQRF( 0, 0, 0, A, 0, ALPHA, B, 1, BETA, W, LW, INFO )
  594. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  595. INFOT = 8
  596. CALL CGGQRF( 0, 0, 0, A, 1, ALPHA, B, 0, BETA, W, LW, INFO )
  597. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  598. INFOT = 11
  599. CALL CGGQRF( 1, 1, 2, A, 1, ALPHA, B, 1, BETA, W, 1, INFO )
  600. CALL CHKXER( 'CGGQRF', INFOT, NOUT, LERR, OK )
  601. NT = NT + 6
  602. *
  603. * CGGRQF
  604. *
  605. SRNAMT = 'CGGRQF'
  606. INFOT = 1
  607. CALL CGGRQF( -1, 0, 0, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  608. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  609. INFOT = 2
  610. CALL CGGRQF( 0, -1, 0, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  611. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  612. INFOT = 3
  613. CALL CGGRQF( 0, 0, -1, A, 1, ALPHA, B, 1, BETA, W, LW, INFO )
  614. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  615. INFOT = 5
  616. CALL CGGRQF( 0, 0, 0, A, 0, ALPHA, B, 1, BETA, W, LW, INFO )
  617. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  618. INFOT = 8
  619. CALL CGGRQF( 0, 0, 0, A, 1, ALPHA, B, 0, BETA, W, LW, INFO )
  620. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  621. INFOT = 11
  622. CALL CGGRQF( 1, 1, 2, A, 1, ALPHA, B, 1, BETA, W, 1, INFO )
  623. CALL CHKXER( 'CGGRQF', INFOT, NOUT, LERR, OK )
  624. NT = NT + 6
  625. *
  626. * Test error exits for the CGS, CGV, CGX, and CXV paths.
  627. *
  628. ELSE IF( LSAMEN( 3, PATH, 'CGS' ) .OR.
  629. $ LSAMEN( 3, PATH, 'CGV' ) .OR.
  630. $ LSAMEN( 3, PATH, 'CGX' ) .OR. LSAMEN( 3, PATH, 'CXV' ) )
  631. $ THEN
  632. *
  633. * CGGES
  634. *
  635. SRNAMT = 'CGGES '
  636. INFOT = 1
  637. CALL CGGES( '/', 'N', 'S', CLCTES, 1, A, 1, B, 1, SDIM, ALPHA,
  638. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  639. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  640. INFOT = 2
  641. CALL CGGES( 'N', '/', 'S', CLCTES, 1, A, 1, B, 1, SDIM, ALPHA,
  642. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  643. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  644. INFOT = 3
  645. CALL CGGES( 'N', 'V', '/', CLCTES, 1, A, 1, B, 1, SDIM, ALPHA,
  646. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  647. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  648. INFOT = 5
  649. CALL CGGES( 'N', 'V', 'S', CLCTES, -1, A, 1, B, 1, SDIM, ALPHA,
  650. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  651. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  652. INFOT = 7
  653. CALL CGGES( 'N', 'V', 'S', CLCTES, 1, A, 0, B, 1, SDIM, ALPHA,
  654. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  655. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  656. INFOT = 9
  657. CALL CGGES( 'N', 'V', 'S', CLCTES, 1, A, 1, B, 0, SDIM, ALPHA,
  658. $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO )
  659. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  660. INFOT = 14
  661. CALL CGGES( 'N', 'V', 'S', CLCTES, 1, A, 1, B, 1, SDIM, ALPHA,
  662. $ BETA, Q, 0, U, 1, W, 1, RW, BW, INFO )
  663. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  664. INFOT = 14
  665. CALL CGGES( 'V', 'V', 'S', CLCTES, 2, A, 2, B, 2, SDIM, ALPHA,
  666. $ BETA, Q, 1, U, 2, W, 1, RW, BW, INFO )
  667. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  668. INFOT = 16
  669. CALL CGGES( 'N', 'V', 'S', CLCTES, 1, A, 1, B, 1, SDIM, ALPHA,
  670. $ BETA, Q, 1, U, 0, W, 1, RW, BW, INFO )
  671. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  672. INFOT = 16
  673. CALL CGGES( 'V', 'V', 'S', CLCTES, 2, A, 2, B, 2, SDIM, ALPHA,
  674. $ BETA, Q, 2, U, 1, W, 1, RW, BW, INFO )
  675. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  676. INFOT = 18
  677. CALL CGGES( 'V', 'V', 'S', CLCTES, 2, A, 2, B, 2, SDIM, ALPHA,
  678. $ BETA, Q, 2, U, 2, W, 1, RW, BW, INFO )
  679. CALL CHKXER( 'CGGES ', INFOT, NOUT, LERR, OK )
  680. NT = NT + 11
  681. *
  682. * CGGESX
  683. *
  684. SRNAMT = 'CGGESX'
  685. INFOT = 1
  686. CALL CGGESX( '/', 'N', 'S', CLCTSX, 'N', 1, A, 1, B, 1, SDIM,
  687. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  688. $ 1, BW, INFO )
  689. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  690. INFOT = 2
  691. CALL CGGESX( 'N', '/', 'S', CLCTSX, 'N', 1, A, 1, B, 1, SDIM,
  692. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  693. $ 1, BW, INFO )
  694. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  695. INFOT = 3
  696. CALL CGGESX( 'V', 'V', '/', CLCTSX, 'N', 1, A, 1, B, 1, SDIM,
  697. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  698. $ 1, BW, INFO )
  699. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  700. INFOT = 5
  701. CALL CGGESX( 'V', 'V', 'S', CLCTSX, '/', 1, A, 1, B, 1, SDIM,
  702. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  703. $ 1, BW, INFO )
  704. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  705. INFOT = 6
  706. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', -1, A, 1, B, 1, SDIM,
  707. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  708. $ 1, BW, INFO )
  709. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  710. INFOT = 8
  711. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 1, A, 0, B, 1, SDIM,
  712. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  713. $ 1, BW, INFO )
  714. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  715. INFOT = 10
  716. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 1, A, 1, B, 0, SDIM,
  717. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  718. $ 1, BW, INFO )
  719. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  720. INFOT = 15
  721. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 1, A, 1, B, 1, SDIM,
  722. $ ALPHA, BETA, Q, 0, U, 1, RCE, RCV, W, 1, RW, IW,
  723. $ 1, BW, INFO )
  724. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  725. INFOT = 15
  726. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 2, A, 2, B, 2, SDIM,
  727. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 1, RW, IW,
  728. $ 1, BW, INFO )
  729. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  730. INFOT = 17
  731. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 1, A, 1, B, 1, SDIM,
  732. $ ALPHA, BETA, Q, 1, U, 0, RCE, RCV, W, 1, RW, IW,
  733. $ 1, BW, INFO )
  734. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  735. INFOT = 17
  736. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 2, A, 2, B, 2, SDIM,
  737. $ ALPHA, BETA, Q, 2, U, 1, RCE, RCV, W, 1, RW, IW,
  738. $ 1, BW, INFO )
  739. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  740. INFOT = 21
  741. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'B', 2, A, 2, B, 2, SDIM,
  742. $ ALPHA, BETA, Q, 2, U, 2, RCE, RCV, W, 1, RW, IW,
  743. $ 1, BW, INFO )
  744. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  745. INFOT = 24
  746. CALL CGGESX( 'V', 'V', 'S', CLCTSX, 'V', 1, A, 1, B, 1, SDIM,
  747. $ ALPHA, BETA, Q, 1, U, 1, RCE, RCV, W, 32, RW, IW,
  748. $ 0, BW, INFO )
  749. CALL CHKXER( 'CGGESX', INFOT, NOUT, LERR, OK )
  750. NT = NT + 13
  751. *
  752. * CGGEV
  753. *
  754. SRNAMT = 'CGGEV '
  755. INFOT = 1
  756. CALL CGGEV( '/', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1,
  757. $ W, 1, RW, INFO )
  758. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  759. INFOT = 2
  760. CALL CGGEV( 'N', '/', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1,
  761. $ W, 1, RW, INFO )
  762. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  763. INFOT = 3
  764. CALL CGGEV( 'V', 'V', -1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1,
  765. $ W, 1, RW, INFO )
  766. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  767. INFOT = 5
  768. CALL CGGEV( 'V', 'V', 1, A, 0, B, 1, ALPHA, BETA, Q, 1, U, 1,
  769. $ W, 1, RW, INFO )
  770. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  771. INFOT = 7
  772. CALL CGGEV( 'V', 'V', 1, A, 1, B, 0, ALPHA, BETA, Q, 1, U, 1,
  773. $ W, 1, RW, INFO )
  774. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  775. INFOT = 11
  776. CALL CGGEV( 'N', 'V', 1, A, 1, B, 1, ALPHA, BETA, Q, 0, U, 1,
  777. $ W, 1, RW, INFO )
  778. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  779. INFOT = 11
  780. CALL CGGEV( 'V', 'V', 2, A, 2, B, 2, ALPHA, BETA, Q, 1, U, 2,
  781. $ W, 1, RW, INFO )
  782. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  783. INFOT = 13
  784. CALL CGGEV( 'V', 'N', 2, A, 2, B, 2, ALPHA, BETA, Q, 2, U, 0,
  785. $ W, 1, RW, INFO )
  786. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  787. INFOT = 13
  788. CALL CGGEV( 'V', 'V', 2, A, 2, B, 2, ALPHA, BETA, Q, 2, U, 1,
  789. $ W, 1, RW, INFO )
  790. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  791. INFOT = 15
  792. CALL CGGEV( 'V', 'V', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1,
  793. $ W, 1, RW, INFO )
  794. CALL CHKXER( 'CGGEV ', INFOT, NOUT, LERR, OK )
  795. NT = NT + 10
  796. *
  797. * CGGEVX
  798. *
  799. SRNAMT = 'CGGEVX'
  800. INFOT = 1
  801. CALL CGGEVX( '/', 'N', 'N', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q,
  802. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  803. $ W, 1, RW, IW, BW, INFO )
  804. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  805. INFOT = 2
  806. CALL CGGEVX( 'N', '/', 'N', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q,
  807. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  808. $ W, 1, RW, IW, BW, INFO )
  809. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  810. INFOT = 3
  811. CALL CGGEVX( 'N', 'N', '/', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q,
  812. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  813. $ W, 1, RW, IW, BW, INFO )
  814. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  815. INFOT = 4
  816. CALL CGGEVX( 'N', 'N', 'N', '/', 1, A, 1, B, 1, ALPHA, BETA, Q,
  817. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  818. $ W, 1, RW, IW, BW, INFO )
  819. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  820. INFOT = 5
  821. CALL CGGEVX( 'N', 'N', 'N', 'N', -1, A, 1, B, 1, ALPHA, BETA,
  822. $ Q, 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE,
  823. $ RCV, W, 1, RW, IW, BW, INFO )
  824. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  825. INFOT = 7
  826. CALL CGGEVX( 'N', 'N', 'N', 'N', 1, A, 0, B, 1, ALPHA, BETA, Q,
  827. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  828. $ W, 1, RW, IW, BW, INFO )
  829. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  830. INFOT = 9
  831. CALL CGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 0, ALPHA, BETA, Q,
  832. $ 1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  833. $ W, 1, RW, IW, BW, INFO )
  834. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  835. INFOT = 13
  836. CALL CGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q,
  837. $ 0, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  838. $ W, 1, RW, IW, BW, INFO )
  839. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  840. INFOT = 13
  841. CALL CGGEVX( 'N', 'V', 'N', 'N', 2, A, 2, B, 2, ALPHA, BETA, Q,
  842. $ 1, U, 2, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  843. $ W, 1, RW, IW, BW, INFO )
  844. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  845. INFOT = 15
  846. CALL CGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q,
  847. $ 1, U, 0, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  848. $ W, 1, RW, IW, BW, INFO )
  849. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  850. INFOT = 15
  851. CALL CGGEVX( 'N', 'N', 'V', 'N', 2, A, 2, B, 2, ALPHA, BETA, Q,
  852. $ 2, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  853. $ W, 1, RW, IW, BW, INFO )
  854. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  855. INFOT = 25
  856. CALL CGGEVX( 'N', 'N', 'V', 'N', 2, A, 2, B, 2, ALPHA, BETA, Q,
  857. $ 2, U, 2, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
  858. $ W, 0, RW, IW, BW, INFO )
  859. CALL CHKXER( 'CGGEVX', INFOT, NOUT, LERR, OK )
  860. NT = NT + 12
  861. *
  862. * CTGEXC
  863. *
  864. SRNAMT = 'CTGEXC'
  865. INFOT = 3
  866. CALL CTGEXC( .TRUE., .TRUE., -1, A, 1, B, 1, Q, 1, Z, 1, IFST,
  867. $ ILST, INFO )
  868. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  869. INFOT = 5
  870. CALL CTGEXC( .TRUE., .TRUE., 1, A, 0, B, 1, Q, 1, Z, 1, IFST,
  871. $ ILST, INFO )
  872. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  873. INFOT = 7
  874. CALL CTGEXC( .TRUE., .TRUE., 1, A, 1, B, 0, Q, 1, Z, 1, IFST,
  875. $ ILST, INFO )
  876. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  877. INFOT = 9
  878. CALL CTGEXC( .FALSE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
  879. $ ILST, INFO )
  880. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  881. INFOT = 9
  882. CALL CTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
  883. $ ILST, INFO )
  884. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  885. INFOT = 11
  886. CALL CTGEXC( .TRUE., .FALSE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
  887. $ ILST, INFO )
  888. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  889. INFOT = 11
  890. CALL CTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
  891. $ ILST, INFO )
  892. CALL CHKXER( 'CTGEXC', INFOT, NOUT, LERR, OK )
  893. NT = NT + 7
  894. *
  895. * CTGSEN
  896. *
  897. SRNAMT = 'CTGSEN'
  898. INFOT = 1
  899. CALL CTGSEN( -1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  900. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  901. $ INFO )
  902. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  903. INFOT = 5
  904. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, -1, A, 1, B, 1, ALPHA,
  905. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  906. $ INFO )
  907. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  908. INFOT = 7
  909. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 0, B, 1, ALPHA,
  910. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  911. $ INFO )
  912. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  913. INFOT = 9
  914. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 0, ALPHA,
  915. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  916. $ INFO )
  917. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  918. INFOT = 13
  919. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  920. $ BETA, Q, 0, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  921. $ INFO )
  922. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  923. INFOT = 15
  924. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  925. $ BETA, Q, 1, Z, 0, M, TOLA, TOLB, RCV, W, 1, IW, 1,
  926. $ INFO )
  927. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  928. INFOT = 21
  929. CALL CTGSEN( 3, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  930. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, -5, IW,
  931. $ 1, INFO )
  932. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  933. INFOT = 23
  934. CALL CTGSEN( 0, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  935. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW,
  936. $ 0, INFO )
  937. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  938. INFOT = 23
  939. CALL CTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  940. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW,
  941. $ 0, INFO )
  942. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  943. INFOT = 23
  944. CALL CTGSEN( 5, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, ALPHA,
  945. $ BETA, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW,
  946. $ 1, INFO )
  947. CALL CHKXER( 'CTGSEN', INFOT, NOUT, LERR, OK )
  948. NT = NT + 11
  949. *
  950. * CTGSNA
  951. *
  952. SRNAMT = 'CTGSNA'
  953. INFOT = 1
  954. CALL CTGSNA( '/', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  955. $ 1, M, W, 1, IW, INFO )
  956. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  957. INFOT = 2
  958. CALL CTGSNA( 'B', '/', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  959. $ 1, M, W, 1, IW, INFO )
  960. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  961. INFOT = 4
  962. CALL CTGSNA( 'B', 'A', SEL, -1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  963. $ 1, M, W, 1, IW, INFO )
  964. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  965. INFOT = 6
  966. CALL CTGSNA( 'B', 'A', SEL, 1, A, 0, B, 1, Q, 1, U, 1, R1, R2,
  967. $ 1, M, W, 1, IW, INFO )
  968. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  969. INFOT = 8
  970. CALL CTGSNA( 'B', 'A', SEL, 1, A, 1, B, 0, Q, 1, U, 1, R1, R2,
  971. $ 1, M, W, 1, IW, INFO )
  972. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  973. INFOT = 10
  974. CALL CTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 0, U, 1, R1, R2,
  975. $ 1, M, W, 1, IW, INFO )
  976. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  977. INFOT = 12
  978. CALL CTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 0, R1, R2,
  979. $ 1, M, W, 1, IW, INFO )
  980. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  981. INFOT = 15
  982. CALL CTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  983. $ 0, M, W, 1, IW, INFO )
  984. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  985. INFOT = 18
  986. CALL CTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  987. $ 1, M, W, 0, IW, INFO )
  988. CALL CHKXER( 'CTGSNA', INFOT, NOUT, LERR, OK )
  989. NT = NT + 9
  990. *
  991. * CTGSYL
  992. *
  993. SRNAMT = 'CTGSYL'
  994. INFOT = 1
  995. CALL CTGSYL( '/', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  996. $ SCALE, DIF, W, 1, IW, INFO )
  997. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  998. INFOT = 2
  999. CALL CTGSYL( 'N', -1, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1000. $ SCALE, DIF, W, 1, IW, INFO )
  1001. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1002. INFOT = 3
  1003. CALL CTGSYL( 'N', 0, 0, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1004. $ SCALE, DIF, W, 1, IW, INFO )
  1005. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1006. INFOT = 4
  1007. CALL CTGSYL( 'N', 0, 1, 0, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1008. $ SCALE, DIF, W, 1, IW, INFO )
  1009. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1010. INFOT = 6
  1011. CALL CTGSYL( 'N', 0, 1, 1, A, 0, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1012. $ SCALE, DIF, W, 1, IW, INFO )
  1013. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1014. INFOT = 8
  1015. CALL CTGSYL( 'N', 0, 1, 1, A, 1, B, 0, Q, 1, U, 1, V, 1, Z, 1,
  1016. $ SCALE, DIF, W, 1, IW, INFO )
  1017. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1018. INFOT = 10
  1019. CALL CTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 0, U, 1, V, 1, Z, 1,
  1020. $ SCALE, DIF, W, 1, IW, INFO )
  1021. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1022. INFOT = 12
  1023. CALL CTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 0, V, 1, Z, 1,
  1024. $ SCALE, DIF, W, 1, IW, INFO )
  1025. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1026. INFOT = 14
  1027. CALL CTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 0, Z, 1,
  1028. $ SCALE, DIF, W, 1, IW, INFO )
  1029. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1030. INFOT = 16
  1031. CALL CTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 0,
  1032. $ SCALE, DIF, W, 1, IW, INFO )
  1033. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1034. INFOT = 20
  1035. CALL CTGSYL( 'N', 1, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1036. $ SCALE, DIF, W, 1, IW, INFO )
  1037. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1038. INFOT = 20
  1039. CALL CTGSYL( 'N', 2, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
  1040. $ SCALE, DIF, W, 1, IW, INFO )
  1041. CALL CHKXER( 'CTGSYL', INFOT, NOUT, LERR, OK )
  1042. NT = NT + 12
  1043. END IF
  1044. *
  1045. * Print a summary line.
  1046. *
  1047. IF( OK ) THEN
  1048. WRITE( NOUT, FMT = 9999 )PATH, NT
  1049. ELSE
  1050. WRITE( NOUT, FMT = 9998 )PATH
  1051. END IF
  1052. *
  1053. 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits (',
  1054. $ I3, ' tests done)' )
  1055. 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
  1056. $ 'exits ***' )
  1057. *
  1058. RETURN
  1059. *
  1060. * End of CERRGG
  1061. *
  1062. END