1*> \brief \b ZERRGE 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 ZERRGE( 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*> ZERRGE tests the error exits for the COMPLEX*16 routines 25*> for general matrices. 26*> \endverbatim 27* 28* Arguments: 29* ========== 30* 31*> \param[in] PATH 32*> \verbatim 33*> PATH is CHARACTER*3 34*> The LAPACK path name for the routines to be tested. 35*> \endverbatim 36*> 37*> \param[in] NUNIT 38*> \verbatim 39*> NUNIT is INTEGER 40*> The unit number for output. 41*> \endverbatim 42* 43* Authors: 44* ======== 45* 46*> \author Univ. of Tennessee 47*> \author Univ. of California Berkeley 48*> \author Univ. of Colorado Denver 49*> \author NAG Ltd. 50* 51*> \date November 2011 52* 53*> \ingroup complex16_lin 54* 55* ===================================================================== 56 SUBROUTINE ZERRGE( PATH, NUNIT ) 57* 58* -- LAPACK test routine (version 3.4.0) -- 59* -- LAPACK is a software package provided by Univ. of Tennessee, -- 60* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 61* November 2011 62* 63* .. Scalar Arguments .. 64 CHARACTER*3 PATH 65 INTEGER NUNIT 66* .. 67* 68* ===================================================================== 69* 70* .. Parameters .. 71 INTEGER NMAX 72 PARAMETER ( NMAX = 4 ) 73* .. 74* .. Local Scalars .. 75 CHARACTER*2 C2 76 INTEGER I, INFO, J 77 DOUBLE PRECISION ANRM, CCOND, RCOND 78* .. 79* .. Local Arrays .. 80 INTEGER IP( NMAX ) 81 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX ) 82 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ), 83 $ W( 2*NMAX ), X( NMAX ) 84* .. 85* .. External Functions .. 86 LOGICAL LSAMEN 87 EXTERNAL LSAMEN 88* .. 89* .. External Subroutines .. 90 EXTERNAL ALAESM, CHKXER, ZGBCON, ZGBEQU, ZGBRFS, ZGBTF2, 91 $ ZGBTRF, ZGBTRS, ZGECON, ZGEEQU, ZGERFS, ZGETF2, 92 $ ZGETRF, ZGETRI, ZGETRS 93* .. 94* .. Scalars in Common .. 95 LOGICAL LERR, OK 96 CHARACTER*32 SRNAMT 97 INTEGER INFOT, NOUT 98* .. 99* .. Common blocks .. 100 COMMON / INFOC / INFOT, NOUT, OK, LERR 101 COMMON / SRNAMC / SRNAMT 102* .. 103* .. Intrinsic Functions .. 104 INTRINSIC DBLE, DCMPLX 105* .. 106* .. Executable Statements .. 107* 108 NOUT = NUNIT 109 WRITE( NOUT, FMT = * ) 110 C2 = PATH( 2: 3 ) 111* 112* Set the variables to innocuous values. 113* 114 DO 20 J = 1, NMAX 115 DO 10 I = 1, NMAX 116 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 117 $ -1.D0 / DBLE( I+J ) ) 118 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 119 $ -1.D0 / DBLE( I+J ) ) 120 10 CONTINUE 121 B( J ) = 0.D0 122 R1( J ) = 0.D0 123 R2( J ) = 0.D0 124 W( J ) = 0.D0 125 X( J ) = 0.D0 126 IP( J ) = J 127 20 CONTINUE 128 OK = .TRUE. 129* 130* Test error exits of the routines that use the LU decomposition 131* of a general matrix. 132* 133 IF( LSAMEN( 2, C2, 'GE' ) ) THEN 134* 135* ZGETRF 136* 137 SRNAMT = 'ZGETRF' 138 INFOT = 1 139 CALL ZGETRF( -1, 0, A, 1, IP, INFO ) 140 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK ) 141 INFOT = 2 142 CALL ZGETRF( 0, -1, A, 1, IP, INFO ) 143 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK ) 144 INFOT = 4 145 CALL ZGETRF( 2, 1, A, 1, IP, INFO ) 146 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK ) 147* 148* ZGETF2 149* 150 SRNAMT = 'ZGETF2' 151 INFOT = 1 152 CALL ZGETF2( -1, 0, A, 1, IP, INFO ) 153 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK ) 154 INFOT = 2 155 CALL ZGETF2( 0, -1, A, 1, IP, INFO ) 156 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK ) 157 INFOT = 4 158 CALL ZGETF2( 2, 1, A, 1, IP, INFO ) 159 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK ) 160* 161* ZGETRI 162* 163 SRNAMT = 'ZGETRI' 164 INFOT = 1 165 CALL ZGETRI( -1, A, 1, IP, W, 1, INFO ) 166 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK ) 167 INFOT = 3 168 CALL ZGETRI( 2, A, 1, IP, W, 2, INFO ) 169 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK ) 170 INFOT = 6 171 CALL ZGETRI( 2, A, 2, IP, W, 1, INFO ) 172 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK ) 173* 174* ZGETRS 175* 176 SRNAMT = 'ZGETRS' 177 INFOT = 1 178 CALL ZGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO ) 179 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK ) 180 INFOT = 2 181 CALL ZGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO ) 182 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK ) 183 INFOT = 3 184 CALL ZGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO ) 185 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK ) 186 INFOT = 5 187 CALL ZGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO ) 188 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK ) 189 INFOT = 8 190 CALL ZGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO ) 191 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK ) 192* 193* ZGERFS 194* 195 SRNAMT = 'ZGERFS' 196 INFOT = 1 197 CALL ZGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W, 198 $ R, INFO ) 199 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 200 INFOT = 2 201 CALL ZGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, 202 $ W, R, INFO ) 203 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 204 INFOT = 3 205 CALL ZGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, 206 $ W, R, INFO ) 207 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 208 INFOT = 5 209 CALL ZGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W, 210 $ R, INFO ) 211 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 212 INFOT = 7 213 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W, 214 $ R, INFO ) 215 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 216 INFOT = 10 217 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W, 218 $ R, INFO ) 219 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 220 INFOT = 12 221 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W, 222 $ R, INFO ) 223 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK ) 224* 225* ZGECON 226* 227 SRNAMT = 'ZGECON' 228 INFOT = 1 229 CALL ZGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO ) 230 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK ) 231 INFOT = 2 232 CALL ZGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO ) 233 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK ) 234 INFOT = 4 235 CALL ZGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO ) 236 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK ) 237* 238* ZGEEQU 239* 240 SRNAMT = 'ZGEEQU' 241 INFOT = 1 242 CALL ZGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO ) 243 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK ) 244 INFOT = 2 245 CALL ZGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO ) 246 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK ) 247 INFOT = 4 248 CALL ZGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO ) 249 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK ) 250* 251* Test error exits of the routines that use the LU decomposition 252* of a general band matrix. 253* 254 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN 255* 256* ZGBTRF 257* 258 SRNAMT = 'ZGBTRF' 259 INFOT = 1 260 CALL ZGBTRF( -1, 0, 0, 0, A, 1, IP, INFO ) 261 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK ) 262 INFOT = 2 263 CALL ZGBTRF( 0, -1, 0, 0, A, 1, IP, INFO ) 264 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK ) 265 INFOT = 3 266 CALL ZGBTRF( 1, 1, -1, 0, A, 1, IP, INFO ) 267 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK ) 268 INFOT = 4 269 CALL ZGBTRF( 1, 1, 0, -1, A, 1, IP, INFO ) 270 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK ) 271 INFOT = 6 272 CALL ZGBTRF( 2, 2, 1, 1, A, 3, IP, INFO ) 273 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK ) 274* 275* ZGBTF2 276* 277 SRNAMT = 'ZGBTF2' 278 INFOT = 1 279 CALL ZGBTF2( -1, 0, 0, 0, A, 1, IP, INFO ) 280 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK ) 281 INFOT = 2 282 CALL ZGBTF2( 0, -1, 0, 0, A, 1, IP, INFO ) 283 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK ) 284 INFOT = 3 285 CALL ZGBTF2( 1, 1, -1, 0, A, 1, IP, INFO ) 286 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK ) 287 INFOT = 4 288 CALL ZGBTF2( 1, 1, 0, -1, A, 1, IP, INFO ) 289 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK ) 290 INFOT = 6 291 CALL ZGBTF2( 2, 2, 1, 1, A, 3, IP, INFO ) 292 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK ) 293* 294* ZGBTRS 295* 296 SRNAMT = 'ZGBTRS' 297 INFOT = 1 298 CALL ZGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO ) 299 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 300 INFOT = 2 301 CALL ZGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO ) 302 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 303 INFOT = 3 304 CALL ZGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO ) 305 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 306 INFOT = 4 307 CALL ZGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO ) 308 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 309 INFOT = 5 310 CALL ZGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO ) 311 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 312 INFOT = 7 313 CALL ZGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO ) 314 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 315 INFOT = 10 316 CALL ZGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO ) 317 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK ) 318* 319* ZGBRFS 320* 321 SRNAMT = 'ZGBRFS' 322 INFOT = 1 323 CALL ZGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, 324 $ R2, W, R, INFO ) 325 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 326 INFOT = 2 327 CALL ZGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, 328 $ R2, W, R, INFO ) 329 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 330 INFOT = 3 331 CALL ZGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, 332 $ R2, W, R, INFO ) 333 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 334 INFOT = 4 335 CALL ZGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, 336 $ R2, W, R, INFO ) 337 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 338 INFOT = 5 339 CALL ZGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, 340 $ R2, W, R, INFO ) 341 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 342 INFOT = 7 343 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1, 344 $ R2, W, R, INFO ) 345 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 346 INFOT = 9 347 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1, 348 $ R2, W, R, INFO ) 349 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 350 INFOT = 12 351 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1, 352 $ R2, W, R, INFO ) 353 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 354 INFOT = 14 355 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1, 356 $ R2, W, R, INFO ) 357 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK ) 358* 359* ZGBCON 360* 361 SRNAMT = 'ZGBCON' 362 INFOT = 1 363 CALL ZGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO ) 364 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK ) 365 INFOT = 2 366 CALL ZGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO ) 367 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK ) 368 INFOT = 3 369 CALL ZGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO ) 370 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK ) 371 INFOT = 4 372 CALL ZGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO ) 373 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK ) 374 INFOT = 6 375 CALL ZGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO ) 376 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK ) 377* 378* ZGBEQU 379* 380 SRNAMT = 'ZGBEQU' 381 INFOT = 1 382 CALL ZGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, 383 $ INFO ) 384 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK ) 385 INFOT = 2 386 CALL ZGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, 387 $ INFO ) 388 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK ) 389 INFOT = 3 390 CALL ZGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, 391 $ INFO ) 392 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK ) 393 INFOT = 4 394 CALL ZGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, 395 $ INFO ) 396 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK ) 397 INFOT = 6 398 CALL ZGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM, 399 $ INFO ) 400 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK ) 401 END IF 402* 403* Print a summary line. 404* 405 CALL ALAESM( PATH, OK, NOUT ) 406* 407 RETURN 408* 409* End of ZERRGE 410* 411 END 412