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.

serrgg.f 44 kB

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