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 1060