1*> \brief \b ZERRPO 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 ZERRPO( 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*> ZERRPO tests the error exits for the COMPLEX*16 routines 25*> for Hermitian positive definite 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 ZERRPO( 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, RCOND 78* .. 79* .. Local Arrays .. 80 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX ) 81 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ), 82 $ W( 2*NMAX ), X( NMAX ) 83* .. 84* .. External Functions .. 85 LOGICAL LSAMEN 86 EXTERNAL LSAMEN 87* .. 88* .. External Subroutines .. 89 EXTERNAL ALAESM, CHKXER, ZPBCON, ZPBEQU, ZPBRFS, ZPBTF2, 90 $ ZPBTRF, ZPBTRS, ZPOCON, ZPOEQU, ZPORFS, ZPOTF2, 91 $ ZPOTRF, ZPOTRI, ZPOTRS, ZPPCON, ZPPEQU, ZPPRFS, 92 $ ZPPTRF, ZPPTRI, ZPPTRS 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 20 CONTINUE 127 ANRM = 1.D0 128 OK = .TRUE. 129* 130* Test error exits of the routines that use the Cholesky 131* decomposition of a Hermitian positive definite matrix. 132* 133 IF( LSAMEN( 2, C2, 'PO' ) ) THEN 134* 135* ZPOTRF 136* 137 SRNAMT = 'ZPOTRF' 138 INFOT = 1 139 CALL ZPOTRF( '/', 0, A, 1, INFO ) 140 CALL CHKXER( 'ZPOTRF', INFOT, NOUT, LERR, OK ) 141 INFOT = 2 142 CALL ZPOTRF( 'U', -1, A, 1, INFO ) 143 CALL CHKXER( 'ZPOTRF', INFOT, NOUT, LERR, OK ) 144 INFOT = 4 145 CALL ZPOTRF( 'U', 2, A, 1, INFO ) 146 CALL CHKXER( 'ZPOTRF', INFOT, NOUT, LERR, OK ) 147* 148* ZPOTF2 149* 150 SRNAMT = 'ZPOTF2' 151 INFOT = 1 152 CALL ZPOTF2( '/', 0, A, 1, INFO ) 153 CALL CHKXER( 'ZPOTF2', INFOT, NOUT, LERR, OK ) 154 INFOT = 2 155 CALL ZPOTF2( 'U', -1, A, 1, INFO ) 156 CALL CHKXER( 'ZPOTF2', INFOT, NOUT, LERR, OK ) 157 INFOT = 4 158 CALL ZPOTF2( 'U', 2, A, 1, INFO ) 159 CALL CHKXER( 'ZPOTF2', INFOT, NOUT, LERR, OK ) 160* 161* ZPOTRI 162* 163 SRNAMT = 'ZPOTRI' 164 INFOT = 1 165 CALL ZPOTRI( '/', 0, A, 1, INFO ) 166 CALL CHKXER( 'ZPOTRI', INFOT, NOUT, LERR, OK ) 167 INFOT = 2 168 CALL ZPOTRI( 'U', -1, A, 1, INFO ) 169 CALL CHKXER( 'ZPOTRI', INFOT, NOUT, LERR, OK ) 170 INFOT = 4 171 CALL ZPOTRI( 'U', 2, A, 1, INFO ) 172 CALL CHKXER( 'ZPOTRI', INFOT, NOUT, LERR, OK ) 173* 174* ZPOTRS 175* 176 SRNAMT = 'ZPOTRS' 177 INFOT = 1 178 CALL ZPOTRS( '/', 0, 0, A, 1, B, 1, INFO ) 179 CALL CHKXER( 'ZPOTRS', INFOT, NOUT, LERR, OK ) 180 INFOT = 2 181 CALL ZPOTRS( 'U', -1, 0, A, 1, B, 1, INFO ) 182 CALL CHKXER( 'ZPOTRS', INFOT, NOUT, LERR, OK ) 183 INFOT = 3 184 CALL ZPOTRS( 'U', 0, -1, A, 1, B, 1, INFO ) 185 CALL CHKXER( 'ZPOTRS', INFOT, NOUT, LERR, OK ) 186 INFOT = 5 187 CALL ZPOTRS( 'U', 2, 1, A, 1, B, 2, INFO ) 188 CALL CHKXER( 'ZPOTRS', INFOT, NOUT, LERR, OK ) 189 INFOT = 7 190 CALL ZPOTRS( 'U', 2, 1, A, 2, B, 1, INFO ) 191 CALL CHKXER( 'ZPOTRS', INFOT, NOUT, LERR, OK ) 192* 193* ZPORFS 194* 195 SRNAMT = 'ZPORFS' 196 INFOT = 1 197 CALL ZPORFS( '/', 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R, 198 $ INFO ) 199 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 200 INFOT = 2 201 CALL ZPORFS( 'U', -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R, 202 $ INFO ) 203 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 204 INFOT = 3 205 CALL ZPORFS( 'U', 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R, 206 $ INFO ) 207 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 208 INFOT = 5 209 CALL ZPORFS( 'U', 2, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, R, 210 $ INFO ) 211 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 212 INFOT = 7 213 CALL ZPORFS( 'U', 2, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, R, 214 $ INFO ) 215 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 216 INFOT = 9 217 CALL ZPORFS( 'U', 2, 1, A, 2, AF, 2, B, 1, X, 2, R1, R2, W, R, 218 $ INFO ) 219 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 220 INFOT = 11 221 CALL ZPORFS( 'U', 2, 1, A, 2, AF, 2, B, 2, X, 1, R1, R2, W, R, 222 $ INFO ) 223 CALL CHKXER( 'ZPORFS', INFOT, NOUT, LERR, OK ) 224* 225* ZPOCON 226* 227 SRNAMT = 'ZPOCON' 228 INFOT = 1 229 CALL ZPOCON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO ) 230 CALL CHKXER( 'ZPOCON', INFOT, NOUT, LERR, OK ) 231 INFOT = 2 232 CALL ZPOCON( 'U', -1, A, 1, ANRM, RCOND, W, R, INFO ) 233 CALL CHKXER( 'ZPOCON', INFOT, NOUT, LERR, OK ) 234 INFOT = 4 235 CALL ZPOCON( 'U', 2, A, 1, ANRM, RCOND, W, R, INFO ) 236 CALL CHKXER( 'ZPOCON', INFOT, NOUT, LERR, OK ) 237 INFOT = 5 238 CALL ZPOCON( 'U', 1, A, 1, -ANRM, RCOND, W, R, INFO ) 239 CALL CHKXER( 'ZPOCON', INFOT, NOUT, LERR, OK ) 240* 241* ZPOEQU 242* 243 SRNAMT = 'ZPOEQU' 244 INFOT = 1 245 CALL ZPOEQU( -1, A, 1, R1, RCOND, ANRM, INFO ) 246 CALL CHKXER( 'ZPOEQU', INFOT, NOUT, LERR, OK ) 247 INFOT = 3 248 CALL ZPOEQU( 2, A, 1, R1, RCOND, ANRM, INFO ) 249 CALL CHKXER( 'ZPOEQU', INFOT, NOUT, LERR, OK ) 250* 251* Test error exits of the routines that use the Cholesky 252* decomposition of a Hermitian positive definite packed matrix. 253* 254 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN 255* 256* ZPPTRF 257* 258 SRNAMT = 'ZPPTRF' 259 INFOT = 1 260 CALL ZPPTRF( '/', 0, A, INFO ) 261 CALL CHKXER( 'ZPPTRF', INFOT, NOUT, LERR, OK ) 262 INFOT = 2 263 CALL ZPPTRF( 'U', -1, A, INFO ) 264 CALL CHKXER( 'ZPPTRF', INFOT, NOUT, LERR, OK ) 265* 266* ZPPTRI 267* 268 SRNAMT = 'ZPPTRI' 269 INFOT = 1 270 CALL ZPPTRI( '/', 0, A, INFO ) 271 CALL CHKXER( 'ZPPTRI', INFOT, NOUT, LERR, OK ) 272 INFOT = 2 273 CALL ZPPTRI( 'U', -1, A, INFO ) 274 CALL CHKXER( 'ZPPTRI', INFOT, NOUT, LERR, OK ) 275* 276* ZPPTRS 277* 278 SRNAMT = 'ZPPTRS' 279 INFOT = 1 280 CALL ZPPTRS( '/', 0, 0, A, B, 1, INFO ) 281 CALL CHKXER( 'ZPPTRS', INFOT, NOUT, LERR, OK ) 282 INFOT = 2 283 CALL ZPPTRS( 'U', -1, 0, A, B, 1, INFO ) 284 CALL CHKXER( 'ZPPTRS', INFOT, NOUT, LERR, OK ) 285 INFOT = 3 286 CALL ZPPTRS( 'U', 0, -1, A, B, 1, INFO ) 287 CALL CHKXER( 'ZPPTRS', INFOT, NOUT, LERR, OK ) 288 INFOT = 6 289 CALL ZPPTRS( 'U', 2, 1, A, B, 1, INFO ) 290 CALL CHKXER( 'ZPPTRS', INFOT, NOUT, LERR, OK ) 291* 292* ZPPRFS 293* 294 SRNAMT = 'ZPPRFS' 295 INFOT = 1 296 CALL ZPPRFS( '/', 0, 0, A, AF, B, 1, X, 1, R1, R2, W, R, INFO ) 297 CALL CHKXER( 'ZPPRFS', INFOT, NOUT, LERR, OK ) 298 INFOT = 2 299 CALL ZPPRFS( 'U', -1, 0, A, AF, B, 1, X, 1, R1, R2, W, R, 300 $ INFO ) 301 CALL CHKXER( 'ZPPRFS', INFOT, NOUT, LERR, OK ) 302 INFOT = 3 303 CALL ZPPRFS( 'U', 0, -1, A, AF, B, 1, X, 1, R1, R2, W, R, 304 $ INFO ) 305 CALL CHKXER( 'ZPPRFS', INFOT, NOUT, LERR, OK ) 306 INFOT = 7 307 CALL ZPPRFS( 'U', 2, 1, A, AF, B, 1, X, 2, R1, R2, W, R, INFO ) 308 CALL CHKXER( 'ZPPRFS', INFOT, NOUT, LERR, OK ) 309 INFOT = 9 310 CALL ZPPRFS( 'U', 2, 1, A, AF, B, 2, X, 1, R1, R2, W, R, INFO ) 311 CALL CHKXER( 'ZPPRFS', INFOT, NOUT, LERR, OK ) 312* 313* ZPPCON 314* 315 SRNAMT = 'ZPPCON' 316 INFOT = 1 317 CALL ZPPCON( '/', 0, A, ANRM, RCOND, W, R, INFO ) 318 CALL CHKXER( 'ZPPCON', INFOT, NOUT, LERR, OK ) 319 INFOT = 2 320 CALL ZPPCON( 'U', -1, A, ANRM, RCOND, W, R, INFO ) 321 CALL CHKXER( 'ZPPCON', INFOT, NOUT, LERR, OK ) 322 INFOT = 4 323 CALL ZPPCON( 'U', 1, A, -ANRM, RCOND, W, R, INFO ) 324 CALL CHKXER( 'ZPPCON', INFOT, NOUT, LERR, OK ) 325* 326* ZPPEQU 327* 328 SRNAMT = 'ZPPEQU' 329 INFOT = 1 330 CALL ZPPEQU( '/', 0, A, R1, RCOND, ANRM, INFO ) 331 CALL CHKXER( 'ZPPEQU', INFOT, NOUT, LERR, OK ) 332 INFOT = 2 333 CALL ZPPEQU( 'U', -1, A, R1, RCOND, ANRM, INFO ) 334 CALL CHKXER( 'ZPPEQU', INFOT, NOUT, LERR, OK ) 335* 336* Test error exits of the routines that use the Cholesky 337* decomposition of a Hermitian positive definite band matrix. 338* 339 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN 340* 341* ZPBTRF 342* 343 SRNAMT = 'ZPBTRF' 344 INFOT = 1 345 CALL ZPBTRF( '/', 0, 0, A, 1, INFO ) 346 CALL CHKXER( 'ZPBTRF', INFOT, NOUT, LERR, OK ) 347 INFOT = 2 348 CALL ZPBTRF( 'U', -1, 0, A, 1, INFO ) 349 CALL CHKXER( 'ZPBTRF', INFOT, NOUT, LERR, OK ) 350 INFOT = 3 351 CALL ZPBTRF( 'U', 1, -1, A, 1, INFO ) 352 CALL CHKXER( 'ZPBTRF', INFOT, NOUT, LERR, OK ) 353 INFOT = 5 354 CALL ZPBTRF( 'U', 2, 1, A, 1, INFO ) 355 CALL CHKXER( 'ZPBTRF', INFOT, NOUT, LERR, OK ) 356* 357* ZPBTF2 358* 359 SRNAMT = 'ZPBTF2' 360 INFOT = 1 361 CALL ZPBTF2( '/', 0, 0, A, 1, INFO ) 362 CALL CHKXER( 'ZPBTF2', INFOT, NOUT, LERR, OK ) 363 INFOT = 2 364 CALL ZPBTF2( 'U', -1, 0, A, 1, INFO ) 365 CALL CHKXER( 'ZPBTF2', INFOT, NOUT, LERR, OK ) 366 INFOT = 3 367 CALL ZPBTF2( 'U', 1, -1, A, 1, INFO ) 368 CALL CHKXER( 'ZPBTF2', INFOT, NOUT, LERR, OK ) 369 INFOT = 5 370 CALL ZPBTF2( 'U', 2, 1, A, 1, INFO ) 371 CALL CHKXER( 'ZPBTF2', INFOT, NOUT, LERR, OK ) 372* 373* ZPBTRS 374* 375 SRNAMT = 'ZPBTRS' 376 INFOT = 1 377 CALL ZPBTRS( '/', 0, 0, 0, A, 1, B, 1, INFO ) 378 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 379 INFOT = 2 380 CALL ZPBTRS( 'U', -1, 0, 0, A, 1, B, 1, INFO ) 381 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 382 INFOT = 3 383 CALL ZPBTRS( 'U', 1, -1, 0, A, 1, B, 1, INFO ) 384 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 385 INFOT = 4 386 CALL ZPBTRS( 'U', 0, 0, -1, A, 1, B, 1, INFO ) 387 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 388 INFOT = 6 389 CALL ZPBTRS( 'U', 2, 1, 1, A, 1, B, 1, INFO ) 390 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 391 INFOT = 8 392 CALL ZPBTRS( 'U', 2, 0, 1, A, 1, B, 1, INFO ) 393 CALL CHKXER( 'ZPBTRS', INFOT, NOUT, LERR, OK ) 394* 395* ZPBRFS 396* 397 SRNAMT = 'ZPBRFS' 398 INFOT = 1 399 CALL ZPBRFS( '/', 0, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, 400 $ R, INFO ) 401 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 402 INFOT = 2 403 CALL ZPBRFS( 'U', -1, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, 404 $ R, INFO ) 405 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 406 INFOT = 3 407 CALL ZPBRFS( 'U', 1, -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, 408 $ R, INFO ) 409 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 410 INFOT = 4 411 CALL ZPBRFS( 'U', 0, 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, 412 $ R, INFO ) 413 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 414 INFOT = 6 415 CALL ZPBRFS( 'U', 2, 1, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, 416 $ R, INFO ) 417 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 418 INFOT = 8 419 CALL ZPBRFS( 'U', 2, 1, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, 420 $ R, INFO ) 421 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 422 INFOT = 10 423 CALL ZPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 1, X, 2, R1, R2, W, 424 $ R, INFO ) 425 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 426 INFOT = 12 427 CALL ZPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 2, X, 1, R1, R2, W, 428 $ R, INFO ) 429 CALL CHKXER( 'ZPBRFS', INFOT, NOUT, LERR, OK ) 430* 431* ZPBCON 432* 433 SRNAMT = 'ZPBCON' 434 INFOT = 1 435 CALL ZPBCON( '/', 0, 0, A, 1, ANRM, RCOND, W, R, INFO ) 436 CALL CHKXER( 'ZPBCON', INFOT, NOUT, LERR, OK ) 437 INFOT = 2 438 CALL ZPBCON( 'U', -1, 0, A, 1, ANRM, RCOND, W, R, INFO ) 439 CALL CHKXER( 'ZPBCON', INFOT, NOUT, LERR, OK ) 440 INFOT = 3 441 CALL ZPBCON( 'U', 1, -1, A, 1, ANRM, RCOND, W, R, INFO ) 442 CALL CHKXER( 'ZPBCON', INFOT, NOUT, LERR, OK ) 443 INFOT = 5 444 CALL ZPBCON( 'U', 2, 1, A, 1, ANRM, RCOND, W, R, INFO ) 445 CALL CHKXER( 'ZPBCON', INFOT, NOUT, LERR, OK ) 446 INFOT = 6 447 CALL ZPBCON( 'U', 1, 0, A, 1, -ANRM, RCOND, W, R, INFO ) 448 CALL CHKXER( 'ZPBCON', INFOT, NOUT, LERR, OK ) 449* 450* ZPBEQU 451* 452 SRNAMT = 'ZPBEQU' 453 INFOT = 1 454 CALL ZPBEQU( '/', 0, 0, A, 1, R1, RCOND, ANRM, INFO ) 455 CALL CHKXER( 'ZPBEQU', INFOT, NOUT, LERR, OK ) 456 INFOT = 2 457 CALL ZPBEQU( 'U', -1, 0, A, 1, R1, RCOND, ANRM, INFO ) 458 CALL CHKXER( 'ZPBEQU', INFOT, NOUT, LERR, OK ) 459 INFOT = 3 460 CALL ZPBEQU( 'U', 1, -1, A, 1, R1, RCOND, ANRM, INFO ) 461 CALL CHKXER( 'ZPBEQU', INFOT, NOUT, LERR, OK ) 462 INFOT = 5 463 CALL ZPBEQU( 'U', 2, 1, A, 1, R1, RCOND, ANRM, INFO ) 464 CALL CHKXER( 'ZPBEQU', INFOT, NOUT, LERR, OK ) 465 END IF 466* 467* Print a summary line. 468* 469 CALL ALAESM( PATH, OK, NOUT ) 470* 471 RETURN 472* 473* End of ZERRPO 474* 475 END 476