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