PageRenderTime 54ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/structural/supporting_matl_misc_and_old/support/LAPACK/lapack-3.4.0/TESTING/EIG/derrgg.f

https://bitbucket.org/slawton/windturbinemdo-stevebitb
FORTRAN Legacy | 1059 lines | 515 code | 0 blank | 544 comment | 0 complexity | 043190f02d8d8ae4ee7e0c48ff3268be MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause
  1. *> \brief \b DERRGG
  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 DERRGG( 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. *> DERRGG tests the error exits for DGGES, DGGESX, DGGEV, DGGEVX,
  25. *> DGGGLM, DGGHRD, DGGLSE, DGGQRF, DGGRQF, DGGSVD, DGGSVP, DHGEQZ,
  26. *> DORCSD, DTGEVC, DTGEXC, DTGSEN, DTGSJA, DTGSNA, and DTGSYL.
  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 double_eig
  55. *
  56. * =====================================================================
  57. SUBROUTINE DERRGG( 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. DOUBLE PRECISION ONE, ZERO
  75. PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+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. DOUBLE PRECISION ANRM, BNRM, DIF, SCALE, TOLA, TOLB
  82. * ..
  83. * .. Local Arrays ..
  84. LOGICAL BW( NMAX ), SEL( NMAX )
  85. INTEGER IW( NMAX )
  86. DOUBLE PRECISION 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 DLCTES, DLCTSX, LSAMEN
  94. EXTERNAL DLCTES, DLCTSX, LSAMEN
  95. * ..
  96. * .. External Subroutines ..
  97. EXTERNAL CHKXER, DGGES, DGGESX, DGGEV, DGGEVX, DGGGLM,
  98. $ DGGHRD, DGGLSE, DGGQRF, DGGRQF, DGGSVD, DGGSVP,
  99. $ DHGEQZ, DORCSD, DTGEVC, DTGEXC, DTGSEN, DTGSJA,
  100. $ DTGSNA, DTGSYL
  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.0D0
  132. TOLB = 1.0D0
  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. * DGGHRD
  142. *
  143. SRNAMT = 'DGGHRD'
  144. INFOT = 1
  145. CALL DGGHRD( '/', 'N', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  146. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  147. INFOT = 2
  148. CALL DGGHRD( 'N', '/', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  149. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  150. INFOT = 3
  151. CALL DGGHRD( 'N', 'N', -1, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  152. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  153. INFOT = 4
  154. CALL DGGHRD( 'N', 'N', 0, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
  155. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  156. INFOT = 5
  157. CALL DGGHRD( 'N', 'N', 0, 1, 1, A, 1, B, 1, Q, 1, Z, 1, INFO )
  158. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  159. INFOT = 7
  160. CALL DGGHRD( 'N', 'N', 2, 1, 1, A, 1, B, 2, Q, 1, Z, 1, INFO )
  161. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  162. INFOT = 9
  163. CALL DGGHRD( 'N', 'N', 2, 1, 1, A, 2, B, 1, Q, 1, Z, 1, INFO )
  164. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  165. INFOT = 11
  166. CALL DGGHRD( 'V', 'N', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
  167. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  168. INFOT = 13
  169. CALL DGGHRD( 'N', 'V', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
  170. CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
  171. NT = NT + 9
  172. *
  173. * DHGEQZ
  174. *
  175. SRNAMT = 'DHGEQZ'
  176. INFOT = 1
  177. CALL DHGEQZ( '/', 'N', 'N', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
  178. $ 1, Z, 1, W, LW, INFO )
  179. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  180. INFOT = 2
  181. CALL DHGEQZ( 'E', '/', 'N', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
  182. $ 1, Z, 1, W, LW, INFO )
  183. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  184. INFOT = 3
  185. CALL DHGEQZ( 'E', 'N', '/', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
  186. $ 1, Z, 1, W, LW, INFO )
  187. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  188. INFOT = 4
  189. CALL DHGEQZ( 'E', 'N', 'N', -1, 0, 0, A, 1, B, 1, R1, R2, R3,
  190. $ Q, 1, Z, 1, W, LW, INFO )
  191. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  192. INFOT = 5
  193. CALL DHGEQZ( 'E', 'N', 'N', 0, 0, 0, A, 1, B, 1, R1, R2, R3, Q,
  194. $ 1, Z, 1, W, LW, INFO )
  195. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  196. INFOT = 6
  197. CALL DHGEQZ( 'E', 'N', 'N', 0, 1, 1, A, 1, B, 1, R1, R2, R3, Q,
  198. $ 1, Z, 1, W, LW, INFO )
  199. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  200. INFOT = 8
  201. CALL DHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 1, B, 2, R1, R2, R3, Q,
  202. $ 1, Z, 1, W, LW, INFO )
  203. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  204. INFOT = 10
  205. CALL DHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 2, B, 1, R1, R2, R3, Q,
  206. $ 1, Z, 1, W, LW, INFO )
  207. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  208. INFOT = 15
  209. CALL DHGEQZ( 'E', 'V', 'N', 2, 1, 1, A, 2, B, 2, R1, R2, R3, Q,
  210. $ 1, Z, 1, W, LW, INFO )
  211. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  212. INFOT = 17
  213. CALL DHGEQZ( 'E', 'N', 'V', 2, 1, 1, A, 2, B, 2, R1, R2, R3, Q,
  214. $ 1, Z, 1, W, LW, INFO )
  215. CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
  216. NT = NT + 10
  217. *
  218. * DTGEVC
  219. *
  220. SRNAMT = 'DTGEVC'
  221. INFOT = 1
  222. CALL DTGEVC( '/', 'A', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
  223. $ INFO )
  224. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  225. INFOT = 2
  226. CALL DTGEVC( 'R', '/', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
  227. $ INFO )
  228. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  229. INFOT = 4
  230. CALL DTGEVC( 'R', 'A', SEL, -1, A, 1, B, 1, Q, 1, Z, 1, 0, M,
  231. $ W, INFO )
  232. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  233. INFOT = 6
  234. CALL DTGEVC( 'R', 'A', SEL, 2, A, 1, B, 2, Q, 1, Z, 2, 0, M, W,
  235. $ INFO )
  236. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  237. INFOT = 8
  238. CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 1, Q, 1, Z, 2, 0, M, W,
  239. $ INFO )
  240. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  241. INFOT = 10
  242. CALL DTGEVC( 'L', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
  243. $ INFO )
  244. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  245. INFOT = 12
  246. CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
  247. $ INFO )
  248. CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
  249. INFOT = 13
  250. CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 2, 1, M, W,
  251. $ INFO )
  252. CALL CHKXER( 'DTGEVC', 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. * DGGSVD
  260. *
  261. SRNAMT = 'DGGSVD'
  262. INFOT = 1
  263. CALL DGGSVD( '/', '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  266. INFOT = 2
  267. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  270. INFOT = 3
  271. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  274. INFOT = 4
  275. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  278. INFOT = 5
  279. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  282. INFOT = 6
  283. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  286. INFOT = 10
  287. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  290. INFOT = 12
  291. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  294. INFOT = 16
  295. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  298. INFOT = 18
  299. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  302. INFOT = 20
  303. CALL DGGSVD( '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( 'DGGSVD', INFOT, NOUT, LERR, OK )
  306. NT = NT + 11
  307. *
  308. * DGGSVP
  309. *
  310. SRNAMT = 'DGGSVP'
  311. INFOT = 1
  312. CALL DGGSVP( '/', '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  316. INFOT = 2
  317. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  321. INFOT = 3
  322. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  326. INFOT = 4
  327. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  331. INFOT = 5
  332. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  336. INFOT = 6
  337. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  341. INFOT = 8
  342. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  346. INFOT = 10
  347. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  351. INFOT = 16
  352. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  356. INFOT = 18
  357. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  361. INFOT = 20
  362. CALL DGGSVP( '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( 'DGGSVP', INFOT, NOUT, LERR, OK )
  366. NT = NT + 11
  367. *
  368. * DTGSJA
  369. *
  370. SRNAMT = 'DTGSJA'
  371. INFOT = 1
  372. CALL DTGSJA( '/', '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  376. INFOT = 2
  377. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  381. INFOT = 3
  382. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  386. INFOT = 4
  387. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  391. INFOT = 5
  392. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  396. INFOT = 6
  397. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  401. INFOT = 10
  402. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  406. INFOT = 12
  407. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  411. INFOT = 18
  412. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  416. INFOT = 20
  417. CALL DTGSJA( '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( 'DTGSJA', INFOT, NOUT, LERR, OK )
  421. INFOT = 22
  422. CALL DTGSJA( '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( 'DTGSJA', 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. * DGGGLM
  433. *
  434. SRNAMT = 'DGGGLM'
  435. INFOT = 1
  436. CALL DGGGLM( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  437. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  438. INFOT = 2
  439. CALL DGGGLM( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  440. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  441. INFOT = 2
  442. CALL DGGGLM( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  443. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  444. INFOT = 3
  445. CALL DGGGLM( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  446. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  447. INFOT = 3
  448. CALL DGGGLM( 1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  449. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  450. INFOT = 5
  451. CALL DGGGLM( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
  452. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  453. INFOT = 7
  454. CALL DGGGLM( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
  455. CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
  456. INFOT = 12
  457. CALL DGGGLM( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
  458. CALL CHKXER( 'DGGGLM', 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. * DGGLSE
  466. *
  467. SRNAMT = 'DGGLSE'
  468. INFOT = 1
  469. CALL DGGLSE( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  470. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  471. INFOT = 2
  472. CALL DGGLSE( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  473. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  474. INFOT = 3
  475. CALL DGGLSE( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  476. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  477. INFOT = 3
  478. CALL DGGLSE( 0, 0, 1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  479. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  480. INFOT = 3
  481. CALL DGGLSE( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
  482. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  483. INFOT = 5
  484. CALL DGGLSE( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
  485. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  486. INFOT = 7
  487. CALL DGGLSE( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
  488. CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
  489. INFOT = 12
  490. CALL DGGLSE( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
  491. CALL CHKXER( 'DGGLSE', 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. * DORCSD
  499. *
  500. SRNAMT = 'DORCSD'
  501. INFOT = 7
  502. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  508. INFOT = 8
  509. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  515. INFOT = 9
  516. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  522. INFOT = 11
  523. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  529. INFOT = 20
  530. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  536. INFOT = 22
  537. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  543. INFOT = 24
  544. CALL DORCSD( '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( 'DORCSD', INFOT, NOUT, LERR, OK )
  550. INFOT = 26
  551. CALL DORCSD( '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( 'DORCSD', 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. * DGGQRF
  564. *
  565. SRNAMT = 'DGGQRF'
  566. INFOT = 1
  567. CALL DGGQRF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
  568. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  569. INFOT = 2
  570. CALL DGGQRF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
  571. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  572. INFOT = 3
  573. CALL DGGQRF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
  574. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  575. INFOT = 5
  576. CALL DGGQRF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
  577. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  578. INFOT = 8
  579. CALL DGGQRF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
  580. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  581. INFOT = 11
  582. CALL DGGQRF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
  583. CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
  584. NT = NT + 6
  585. *
  586. * DGGRQF
  587. *
  588. SRNAMT = 'DGGRQF'
  589. INFOT = 1
  590. CALL DGGRQF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
  591. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  592. INFOT = 2
  593. CALL DGGRQF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
  594. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  595. INFOT = 3
  596. CALL DGGRQF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
  597. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  598. INFOT = 5
  599. CALL DGGRQF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
  600. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  601. INFOT = 8
  602. CALL DGGRQF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
  603. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  604. INFOT = 11
  605. CALL DGGRQF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
  606. CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
  607. NT = NT + 6
  608. *
  609. * Test error exits for the DGS, DGV, DGX, and DXV paths.
  610. *
  611. ELSE IF( LSAMEN( 3, PATH, 'DGS' ) .OR.
  612. $ LSAMEN( 3, PATH, 'DGV' ) .OR.
  613. $ LSAMEN( 3, PATH, 'DGX' ) .OR. LSAMEN( 3, PATH, 'DXV' ) )
  614. $ THEN
  615. *
  616. * DGGES
  617. *
  618. SRNAMT = 'DGGES '
  619. INFOT = 1
  620. CALL DGGES( '/', 'N', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
  621. $ R3, Q, 1, U, 1, W, 1, BW, INFO )
  622. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  623. INFOT = 2
  624. CALL DGGES( 'N', '/', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
  625. $ R3, Q, 1, U, 1, W, 1, BW, INFO )
  626. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  627. INFOT = 3
  628. CALL DGGES( 'N', 'V', '/', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
  629. $ R3, Q, 1, U, 1, W, 1, BW, INFO )
  630. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  631. INFOT = 5
  632. CALL DGGES( 'N', 'V', 'S', DLCTES, -1, A, 1, B, 1, SDIM, R1,
  633. $ R2, R3, Q, 1, U, 1, W, 1, BW, INFO )
  634. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  635. INFOT = 7
  636. CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 0, B, 1, SDIM, R1, R2,
  637. $ R3, Q, 1, U, 1, W, 1, BW, INFO )
  638. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  639. INFOT = 9
  640. CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 0, SDIM, R1, R2,
  641. $ R3, Q, 1, U, 1, W, 1, BW, INFO )
  642. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  643. INFOT = 15
  644. CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
  645. $ R3, Q, 0, U, 1, W, 1, BW, INFO )
  646. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  647. INFOT = 15
  648. CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
  649. $ R3, Q, 1, U, 2, W, 1, BW, INFO )
  650. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  651. INFOT = 17
  652. CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
  653. $ R3, Q, 1, U, 0, W, 1, BW, INFO )
  654. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  655. INFOT = 17
  656. CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
  657. $ R3, Q, 2, U, 1, W, 1, BW, INFO )
  658. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  659. INFOT = 19
  660. CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
  661. $ R3, Q, 2, U, 2, W, 1, BW, INFO )
  662. CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
  663. NT = NT + 11
  664. *
  665. * DGGESX
  666. *
  667. SRNAMT = 'DGGESX'
  668. INFOT = 1
  669. CALL DGGESX( '/', 'N', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  673. INFOT = 2
  674. CALL DGGESX( 'N', '/', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  678. INFOT = 3
  679. CALL DGGESX( 'V', 'V', '/', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  683. INFOT = 5
  684. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '/', 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( 'DGGESX', INFOT, NOUT, LERR, OK )
  688. INFOT = 6
  689. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  693. INFOT = 8
  694. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  698. INFOT = 10
  699. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  703. INFOT = 16
  704. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  708. INFOT = 16
  709. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  713. INFOT = 18
  714. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  718. INFOT = 18
  719. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  723. INFOT = 22
  724. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  728. INFOT = 24
  729. CALL DGGESX( 'V', 'V', 'S', DLCTSX, '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( 'DGGESX', INFOT, NOUT, LERR, OK )
  733. NT = NT + 13
  734. *
  735. * DGGEV
  736. *
  737. SRNAMT = 'DGGEV '
  738. INFOT = 1
  739. CALL DGGEV( '/', 'N', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
  740. $ 1, INFO )
  741. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  742. INFOT = 2
  743. CALL DGGEV( 'N', '/', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
  744. $ 1, INFO )
  745. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  746. INFOT = 3
  747. CALL DGGEV( 'V', 'V', -1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1,
  748. $ W, 1, INFO )
  749. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  750. INFOT = 5
  751. CALL DGGEV( 'V', 'V', 1, A, 0, B, 1, R1, R2, R3, Q, 1, U, 1, W,
  752. $ 1, INFO )
  753. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  754. INFOT = 7
  755. CALL DGGEV( 'V', 'V', 1, A, 1, B, 0, R1, R2, R3, Q, 1, U, 1, W,
  756. $ 1, INFO )
  757. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  758. INFOT = 12
  759. CALL DGGEV( 'N', 'V', 1, A, 1, B, 1, R1, R2, R3, Q, 0, U, 1, W,
  760. $ 1, INFO )
  761. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  762. INFOT = 12
  763. CALL DGGEV( 'V', 'V', 2, A, 2, B, 2, R1, R2, R3, Q, 1, U, 2, W,
  764. $ 1, INFO )
  765. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  766. INFOT = 14
  767. CALL DGGEV( 'V', 'N', 2, A, 2, B, 2, R1, R2, R3, Q, 2, U, 0, W,
  768. $ 1, INFO )
  769. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  770. INFOT = 14
  771. CALL DGGEV( 'V', 'V', 2, A, 2, B, 2, R1, R2, R3, Q, 2, U, 1, W,
  772. $ 1, INFO )
  773. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  774. INFOT = 16
  775. CALL DGGEV( 'V', 'V', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
  776. $ 1, INFO )
  777. CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
  778. NT = NT + 10
  779. *
  780. * DGGEVX
  781. *
  782. SRNAMT = 'DGGEVX'
  783. INFOT = 1
  784. CALL DGGEVX( '/', '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  788. INFOT = 2
  789. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  793. INFOT = 3
  794. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  798. INFOT = 4
  799. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  803. INFOT = 5
  804. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  808. INFOT = 7
  809. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  813. INFOT = 9
  814. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  818. INFOT = 14
  819. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  823. INFOT = 14
  824. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  828. INFOT = 16
  829. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  833. INFOT = 16
  834. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  838. INFOT = 26
  839. CALL DGGEVX( '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( 'DGGEVX', INFOT, NOUT, LERR, OK )
  843. NT = NT + 12
  844. *
  845. * DTGEXC
  846. *
  847. SRNAMT = 'DTGEXC'
  848. INFOT = 3
  849. CALL DTGEXC( .TRUE., .TRUE., -1, A, 1, B, 1, Q, 1, Z, 1, IFST,
  850. $ ILST, W, 1, INFO )
  851. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  852. INFOT = 5
  853. CALL DTGEXC( .TRUE., .TRUE., 1, A, 0, B, 1, Q, 1, Z, 1, IFST,
  854. $ ILST, W, 1, INFO )
  855. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  856. INFOT = 7
  857. CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 0, Q, 1, Z, 1, IFST,
  858. $ ILST, W, 1, INFO )
  859. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  860. INFOT = 9
  861. CALL DTGEXC( .FALSE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
  862. $ ILST, W, 1, INFO )
  863. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  864. INFOT = 9
  865. CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
  866. $ ILST, W, 1, INFO )
  867. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  868. INFOT = 11
  869. CALL DTGEXC( .TRUE., .FALSE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
  870. $ ILST, W, 1, INFO )
  871. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  872. INFOT = 11
  873. CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
  874. $ ILST, W, 1, INFO )
  875. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  876. INFOT = 15
  877. CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 1, Z, 1, IFST,
  878. $ ILST, W, 0, INFO )
  879. CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
  880. NT = NT + 8
  881. *
  882. * DTGSEN
  883. *
  884. SRNAMT = 'DTGSEN'
  885. INFOT = 1
  886. CALL DTGSEN( -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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  890. INFOT = 5
  891. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  895. INFOT = 7
  896. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  900. INFOT = 9
  901. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  905. INFOT = 14
  906. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  910. INFOT = 16
  911. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  915. INFOT = 22
  916. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  920. INFOT = 22
  921. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  925. INFOT = 22
  926. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  930. INFOT = 24
  931. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  935. INFOT = 24
  936. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  940. INFOT = 24
  941. CALL DTGSEN( 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( 'DTGSEN', INFOT, NOUT, LERR, OK )
  945. NT = NT + 12
  946. *
  947. * DTGSNA
  948. *
  949. SRNAMT = 'DTGSNA'
  950. INFOT = 1
  951. CALL DTGSNA( '/', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  952. $ 1, M, W, 1, IW, INFO )
  953. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  954. INFOT = 2
  955. CALL DTGSNA( 'B', '/', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  956. $ 1, M, W, 1, IW, INFO )
  957. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  958. INFOT = 4
  959. CALL DTGSNA( 'B', 'A', SEL, -1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  960. $ 1, M, W, 1, IW, INFO )
  961. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  962. INFOT = 6
  963. CALL DTGSNA( 'B', 'A', SEL, 1, A, 0, B, 1, Q, 1, U, 1, R1, R2,
  964. $ 1, M, W, 1, IW, INFO )
  965. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  966. INFOT = 8
  967. CALL DTGSNA( 'B', 'A', SEL, 1, A, 1, B, 0, Q, 1, U, 1, R1, R2,
  968. $ 1, M, W, 1, IW, INFO )
  969. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  970. INFOT = 10
  971. CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 0, U, 1, R1, R2,
  972. $ 1, M, W, 1, IW, INFO )
  973. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  974. INFOT = 12
  975. CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 0, R1, R2,
  976. $ 1, M, W, 1, IW, INFO )
  977. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  978. INFOT = 15
  979. CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  980. $ 0, M, W, 1, IW, INFO )
  981. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  982. INFOT = 18
  983. CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
  984. $ 1, M, W, 0, IW, INFO )
  985. CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
  986. NT = NT + 9
  987. *
  988. * DTGSYL
  989. *
  990. SRNAMT = 'DTGSYL'
  991. INFOT = 1
  992. CALL DTGSYL( '/', 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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  995. INFOT = 2
  996. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  999. INFOT = 3
  1000. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1003. INFOT = 4
  1004. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1007. INFOT = 6
  1008. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1011. INFOT = 8
  1012. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1015. INFOT = 10
  1016. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1019. INFOT = 12
  1020. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1023. INFOT = 14
  1024. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1027. INFOT = 16
  1028. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1031. INFOT = 20
  1032. CALL DTGSYL( '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( 'DTGSYL', INFOT, NOUT, LERR, OK )
  1035. INFOT = 20
  1036. CALL DTGSYL( '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( 'DTGSYL', 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 DERRGG
  1058. *
  1059. END