PageRenderTime 62ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/src/lapack-lite-3.1.1/TESTING/EIG/derrgg.f

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