1*> \brief \b CERRHE 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 CERRHE( 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*> CERRHE tests the error exits for the COMPLEX routines 25*> for Hermitian indefinite 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 complex_lin 52* 53* ===================================================================== 54 SUBROUTINE CERRHE( 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* 68* .. Parameters .. 69 INTEGER NMAX 70 PARAMETER ( NMAX = 4 ) 71* .. 72* .. Local Scalars .. 73 CHARACTER*2 C2 74 INTEGER I, INFO, J 75 REAL ANRM, RCOND 76* .. 77* .. Local Arrays .. 78 INTEGER IP( NMAX ) 79 REAL R( NMAX ), R1( NMAX ), R2( NMAX ) 80 COMPLEX A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ), 81 $ E( NMAX ), W( 2*NMAX ), X( NMAX ) 82* .. 83* .. External Functions .. 84 LOGICAL LSAMEN 85 EXTERNAL LSAMEN 86* .. 87* .. External Subroutines .. 88 EXTERNAL ALAESM, CHECON, CSYCON_3, CHECON_ROOK, CHERFS, 89 $ CHETF2, CHETF2_RK, CHETF2_ROOK, CHETRF_AA, 90 $ CHETRF, CHETRF_RK, CHETRF_ROOK, CHETRI, 91 $ CHETRI_3, CHETRI_3X, CHETRI_ROOK, CHETRI2, 92 $ CHETRI2X, CHETRS, CHETRS_3, CHETRS_ROOK, 93 $ CHETRS_AA, CHKXER, CHPCON, CHPRFS, CHPTRF, 94 $ CHETRF_AA_2STAGE, CHETRS_AA_2STAGE, 95 $ CHPTRI, CHPTRS 96* .. 97* .. Scalars in Common .. 98 LOGICAL LERR, OK 99 CHARACTER*32 SRNAMT 100 INTEGER INFOT, NOUT 101* .. 102* .. Common blocks .. 103 COMMON / INFOC / INFOT, NOUT, OK, LERR 104 COMMON / SRNAMC / SRNAMT 105* .. 106* .. Intrinsic Functions .. 107 INTRINSIC CMPLX, REAL 108* .. 109* .. Executable Statements .. 110* 111 NOUT = NUNIT 112 WRITE( NOUT, FMT = * ) 113 C2 = PATH( 2: 3 ) 114* 115* Set the variables to innocuous values. 116* 117 DO 20 J = 1, NMAX 118 DO 10 I = 1, NMAX 119 A( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) ) 120 AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) ) 121 10 CONTINUE 122 B( J ) = 0.E+0 123 E( J ) = 0.E+0 124 R1( J ) = 0.E+0 125 R2( J ) = 0.E+0 126 W( J ) = 0.E+0 127 X( J ) = 0.E+0 128 IP( J ) = J 129 20 CONTINUE 130 ANRM = 1.0 131 OK = .TRUE. 132* 133 IF( LSAMEN( 2, C2, 'HE' ) ) THEN 134* 135* Test error exits of the routines that use factorization 136* of a Hermitian indefinite matrix with patrial 137* (Bunch-Kaufman) diagonal pivoting method. 138* 139* CHETRF 140* 141 SRNAMT = 'CHETRF' 142 INFOT = 1 143 CALL CHETRF( '/', 0, A, 1, IP, W, 1, INFO ) 144 CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK ) 145 INFOT = 2 146 CALL CHETRF( 'U', -1, A, 1, IP, W, 1, INFO ) 147 CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK ) 148 INFOT = 4 149 CALL CHETRF( 'U', 2, A, 1, IP, W, 4, INFO ) 150 CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK ) 151 INFOT = 7 152 CALL CHETRF( 'U', 0, A, 1, IP, W, 0, INFO ) 153 CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK ) 154 INFOT = 7 155 CALL CHETRF( 'U', 0, A, 1, IP, W, -2, INFO ) 156 CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK ) 157* 158* CHETF2 159* 160 SRNAMT = 'CHETF2' 161 INFOT = 1 162 CALL CHETF2( '/', 0, A, 1, IP, INFO ) 163 CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK ) 164 INFOT = 2 165 CALL CHETF2( 'U', -1, A, 1, IP, INFO ) 166 CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK ) 167 INFOT = 4 168 CALL CHETF2( 'U', 2, A, 1, IP, INFO ) 169 CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK ) 170* 171* CHETRI 172* 173 SRNAMT = 'CHETRI' 174 INFOT = 1 175 CALL CHETRI( '/', 0, A, 1, IP, W, INFO ) 176 CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK ) 177 INFOT = 2 178 CALL CHETRI( 'U', -1, A, 1, IP, W, INFO ) 179 CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK ) 180 INFOT = 4 181 CALL CHETRI( 'U', 2, A, 1, IP, W, INFO ) 182 CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK ) 183* 184* CHETRI2 185* 186 SRNAMT = 'CHETRI2' 187 INFOT = 1 188 CALL CHETRI2( '/', 0, A, 1, IP, W, 1, INFO ) 189 CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK ) 190 INFOT = 2 191 CALL CHETRI2( 'U', -1, A, 1, IP, W, 1, INFO ) 192 CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK ) 193 INFOT = 4 194 CALL CHETRI2( 'U', 2, A, 1, IP, W, 1, INFO ) 195 CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK ) 196* 197* CHETRI2X 198* 199 SRNAMT = 'CHETRI2X' 200 INFOT = 1 201 CALL CHETRI2X( '/', 0, A, 1, IP, W, 1, INFO ) 202 CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK ) 203 INFOT = 2 204 CALL CHETRI2X( 'U', -1, A, 1, IP, W, 1, INFO ) 205 CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK ) 206 INFOT = 4 207 CALL CHETRI2X( 'U', 2, A, 1, IP, W, 1, INFO ) 208 CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK ) 209* 210* CHETRS 211* 212 SRNAMT = 'CHETRS' 213 INFOT = 1 214 CALL CHETRS( '/', 0, 0, A, 1, IP, B, 1, INFO ) 215 CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK ) 216 INFOT = 2 217 CALL CHETRS( 'U', -1, 0, A, 1, IP, B, 1, INFO ) 218 CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK ) 219 INFOT = 3 220 CALL CHETRS( 'U', 0, -1, A, 1, IP, B, 1, INFO ) 221 CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK ) 222 INFOT = 5 223 CALL CHETRS( 'U', 2, 1, A, 1, IP, B, 2, INFO ) 224 CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK ) 225 INFOT = 8 226 CALL CHETRS( 'U', 2, 1, A, 2, IP, B, 1, INFO ) 227 CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK ) 228* 229* CHERFS 230* 231 SRNAMT = 'CHERFS' 232 INFOT = 1 233 CALL CHERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W, 234 $ R, INFO ) 235 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 236 INFOT = 2 237 CALL CHERFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, 238 $ W, R, INFO ) 239 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 240 INFOT = 3 241 CALL CHERFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, 242 $ W, R, INFO ) 243 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 244 INFOT = 5 245 CALL CHERFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W, 246 $ R, INFO ) 247 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 248 INFOT = 7 249 CALL CHERFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W, 250 $ R, INFO ) 251 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 252 INFOT = 10 253 CALL CHERFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W, 254 $ R, INFO ) 255 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 256 INFOT = 12 257 CALL CHERFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W, 258 $ R, INFO ) 259 CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK ) 260* 261* CHECON 262* 263 SRNAMT = 'CHECON' 264 INFOT = 1 265 CALL CHECON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO ) 266 CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK ) 267 INFOT = 2 268 CALL CHECON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO ) 269 CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK ) 270 INFOT = 4 271 CALL CHECON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO ) 272 CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK ) 273 INFOT = 6 274 CALL CHECON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO ) 275 CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK ) 276* 277 ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN 278* 279* Test error exits of the routines that use factorization 280* of a Hermitian indefinite matrix with rook 281* (bounded Bunch-Kaufman) diagonal pivoting method. 282* 283* CHETRF_ROOK 284* 285 SRNAMT = 'CHETRF_ROOK' 286 INFOT = 1 287 CALL CHETRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO ) 288 CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK ) 289 INFOT = 2 290 CALL CHETRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO ) 291 CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK ) 292 INFOT = 4 293 CALL CHETRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO ) 294 CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK ) 295 INFOT = 7 296 CALL CHETRF_ROOK( 'U', 0, A, 1, IP, W, 0, INFO ) 297 CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK ) 298 INFOT = 7 299 CALL CHETRF_ROOK( 'U', 0, A, 1, IP, W, -2, INFO ) 300 CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK ) 301* 302* CHETF2_ROOK 303* 304 SRNAMT = 'CHETF2_ROOK' 305 INFOT = 1 306 CALL CHETF2_ROOK( '/', 0, A, 1, IP, INFO ) 307 CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK ) 308 INFOT = 2 309 CALL CHETF2_ROOK( 'U', -1, A, 1, IP, INFO ) 310 CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK ) 311 INFOT = 4 312 CALL CHETF2_ROOK( 'U', 2, A, 1, IP, INFO ) 313 CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK ) 314* 315* CHETRI_ROOK 316* 317 SRNAMT = 'CHETRI_ROOK' 318 INFOT = 1 319 CALL CHETRI_ROOK( '/', 0, A, 1, IP, W, INFO ) 320 CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK ) 321 INFOT = 2 322 CALL CHETRI_ROOK( 'U', -1, A, 1, IP, W, INFO ) 323 CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK ) 324 INFOT = 4 325 CALL CHETRI_ROOK( 'U', 2, A, 1, IP, W, INFO ) 326 CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK ) 327* 328* CHETRS_ROOK 329* 330 SRNAMT = 'CHETRS_ROOK' 331 INFOT = 1 332 CALL CHETRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO ) 333 CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK ) 334 INFOT = 2 335 CALL CHETRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO ) 336 CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK ) 337 INFOT = 3 338 CALL CHETRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO ) 339 CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK ) 340 INFOT = 5 341 CALL CHETRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO ) 342 CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK ) 343 INFOT = 8 344 CALL CHETRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO ) 345 CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK ) 346* 347* CHECON_ROOK 348* 349 SRNAMT = 'CHECON_ROOK' 350 INFOT = 1 351 CALL CHECON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO ) 352 CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK ) 353 INFOT = 2 354 CALL CHECON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO ) 355 CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK ) 356 INFOT = 4 357 CALL CHECON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO ) 358 CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK ) 359 INFOT = 6 360 CALL CHECON_ROOK( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO ) 361 CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK ) 362* 363 ELSE IF( LSAMEN( 2, C2, 'HK' ) ) THEN 364* 365* Test error exits of the routines that use factorization 366* of a Hermitian indefinite matrix with rook 367* (bounded Bunch-Kaufman) pivoting with the new storage 368* format for factors L ( or U) and D. 369* 370* L (or U) is stored in A, diagonal of D is stored on the 371* diagonal of A, subdiagonal of D is stored in a separate array E. 372* 373* CHETRF_RK 374* 375 SRNAMT = 'CHETRF_RK' 376 INFOT = 1 377 CALL CHETRF_RK( '/', 0, A, 1, E, IP, W, 1, INFO ) 378 CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK ) 379 INFOT = 2 380 CALL CHETRF_RK( 'U', -1, A, 1, E, IP, W, 1, INFO ) 381 CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK ) 382 INFOT = 4 383 CALL CHETRF_RK( 'U', 2, A, 1, E, IP, W, 4, INFO ) 384 CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK ) 385 INFOT = 8 386 CALL CHETRF_RK( 'U', 0, A, 1, E, IP, W, 0, INFO ) 387 CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK ) 388 INFOT = 8 389 CALL CHETRF_RK( 'U', 0, A, 1, E, IP, W, -2, INFO ) 390 CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK ) 391* 392* CHETF2_RK 393* 394 SRNAMT = 'CHETF2_RK' 395 INFOT = 1 396 CALL CHETF2_RK( '/', 0, A, 1, E, IP, INFO ) 397 CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK ) 398 INFOT = 2 399 CALL CHETF2_RK( 'U', -1, A, 1, E, IP, INFO ) 400 CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK ) 401 INFOT = 4 402 CALL CHETF2_RK( 'U', 2, A, 1, E, IP, INFO ) 403 CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK ) 404* 405* CHETRI_3 406* 407 SRNAMT = 'CHETRI_3' 408 INFOT = 1 409 CALL CHETRI_3( '/', 0, A, 1, E, IP, W, 1, INFO ) 410 CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK ) 411 INFOT = 2 412 CALL CHETRI_3( 'U', -1, A, 1, E, IP, W, 1, INFO ) 413 CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK ) 414 INFOT = 4 415 CALL CHETRI_3( 'U', 2, A, 1, E, IP, W, 1, INFO ) 416 CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK ) 417 INFOT = 8 418 CALL CHETRI_3( 'U', 0, A, 1, E, IP, W, 0, INFO ) 419 CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK ) 420 INFOT = 8 421 CALL CHETRI_3( 'U', 0, A, 1, E, IP, W, -2, INFO ) 422 CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK ) 423* 424* CHETRI_3X 425* 426 SRNAMT = 'CHETRI_3X' 427 INFOT = 1 428 CALL CHETRI_3X( '/', 0, A, 1, E, IP, W, 1, INFO ) 429 CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK ) 430 INFOT = 2 431 CALL CHETRI_3X( 'U', -1, A, 1, E, IP, W, 1, INFO ) 432 CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK ) 433 INFOT = 4 434 CALL CHETRI_3X( 'U', 2, A, 1, E, IP, W, 1, INFO ) 435 CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK ) 436* 437* CHETRS_3 438* 439 SRNAMT = 'CHETRS_3' 440 INFOT = 1 441 CALL CHETRS_3( '/', 0, 0, A, 1, E, IP, B, 1, INFO ) 442 CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK ) 443 INFOT = 2 444 CALL CHETRS_3( 'U', -1, 0, A, 1, E, IP, B, 1, INFO ) 445 CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK ) 446 INFOT = 3 447 CALL CHETRS_3( 'U', 0, -1, A, 1, E, IP, B, 1, INFO ) 448 CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK ) 449 INFOT = 5 450 CALL CHETRS_3( 'U', 2, 1, A, 1, E, IP, B, 2, INFO ) 451 CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK ) 452 INFOT = 9 453 CALL CHETRS_3( 'U', 2, 1, A, 2, E, IP, B, 1, INFO ) 454 CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK ) 455* 456* CHECON_3 457* 458 SRNAMT = 'CHECON_3' 459 INFOT = 1 460 CALL CHECON_3( '/', 0, A, 1, E, IP, ANRM, RCOND, W, INFO ) 461 CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK ) 462 INFOT = 2 463 CALL CHECON_3( 'U', -1, A, 1, E, IP, ANRM, RCOND, W, INFO ) 464 CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK ) 465 INFOT = 4 466 CALL CHECON_3( 'U', 2, A, 1, E, IP, ANRM, RCOND, W, INFO ) 467 CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK ) 468 INFOT = 7 469 CALL CHECON_3( 'U', 1, A, 1, E, IP, -1.0E0, RCOND, W, INFO) 470 CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK ) 471* 472 ELSE IF( LSAMEN( 2, C2, 'HA' ) ) THEN 473* 474* Test error exits of the routines that use factorization 475* of a Hermitian indefinite matrix with Aasen's algorithm. 476* 477* CHETRF_AA 478* 479 SRNAMT = 'CHETRF_AA' 480 INFOT = 1 481 CALL CHETRF_AA( '/', 0, A, 1, IP, W, 1, INFO ) 482 CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) 483 INFOT = 2 484 CALL CHETRF_AA( 'U', -1, A, 1, IP, W, 1, INFO ) 485 CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) 486 INFOT = 4 487 CALL CHETRF_AA( 'U', 2, A, 1, IP, W, 4, INFO ) 488 CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) 489 INFOT = 7 490 CALL CHETRF_AA( 'U', 2, A, 2, IP, W, 0, INFO ) 491 CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) 492 INFOT = 7 493 CALL CHETRF_AA( 'U', 2, A, 2, IP, W, -2, INFO ) 494 CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK ) 495* 496* CHETRS_AA 497* 498 SRNAMT = 'CHETRS_AA' 499 INFOT = 1 500 CALL CHETRS_AA( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO ) 501 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 502 INFOT = 2 503 CALL CHETRS_AA( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO ) 504 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 505 INFOT = 3 506 CALL CHETRS_AA( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO ) 507 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 508 INFOT = 5 509 CALL CHETRS_AA( 'U', 2, 1, A, 1, IP, B, 2, W, 1, INFO ) 510 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 511 INFOT = 8 512 CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO ) 513 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 514 INFOT = 10 515 CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 2, W, 0, INFO ) 516 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 517 INFOT = 10 518 CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 2, W, -2, INFO ) 519 CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK ) 520* 521 ELSE IF( LSAMEN( 2, C2, 'H2' ) ) THEN 522* 523* Test error exits of the routines that use factorization 524* of a symmetric indefinite matrix with Aasen's algorithm. 525* 526* CHETRF_AA_2STAGE 527* 528 SRNAMT = 'CHETRF_AA_2STAGE' 529 INFOT = 1 530 CALL CHETRF_AA_2STAGE( '/', 0, A, 1, A, 1, IP, IP, W, 1, 531 $ INFO ) 532 CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK ) 533 INFOT = 2 534 CALL CHETRF_AA_2STAGE( 'U', -1, A, 1, A, 1, IP, IP, W, 1, 535 $ INFO ) 536 CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK ) 537 INFOT = 4 538 CALL CHETRF_AA_2STAGE( 'U', 2, A, 1, A, 2, IP, IP, W, 1, 539 $ INFO ) 540 CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK ) 541 INFOT = 6 542 CALL CHETRF_AA_2STAGE( 'U', 2, A, 2, A, 1, IP, IP, W, 1, 543 $ INFO ) 544 CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK ) 545 INFOT = 10 546 CALL CHETRF_AA_2STAGE( 'U', 2, A, 2, A, 8, IP, IP, W, 0, 547 $ INFO ) 548 CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK ) 549* 550* CHETRS_AA_2STAGE 551* 552 SRNAMT = 'CHETRS_AA_2STAGE' 553 INFOT = 1 554 CALL CHETRS_AA_2STAGE( '/', 0, 0, A, 1, A, 1, IP, IP, 555 $ B, 1, INFO ) 556 CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK ) 557 INFOT = 2 558 CALL CHETRS_AA_2STAGE( 'U', -1, 0, A, 1, A, 1, IP, IP, 559 $ B, 1, INFO ) 560 CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK ) 561 INFOT = 3 562 CALL CHETRS_AA_2STAGE( 'U', 0, -1, A, 1, A, 1, IP, IP, 563 $ B, 1, INFO ) 564 CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK ) 565 INFOT = 5 566 CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 1, A, 1, IP, IP, 567 $ B, 1, INFO ) 568 CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK ) 569 INFOT = 7 570 CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 2, A, 1, IP, IP, 571 $ B, 1, INFO ) 572 CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK ) 573 INFOT = 11 574 CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 2, A, 8, IP, IP, 575 $ B, 1, INFO ) 576 CALL CHKXER( 'CHETRS_AA_STAGE', INFOT, NOUT, LERR, OK ) 577* 578* Test error exits of the routines that use factorization 579* of a Hermitian indefinite packed matrix with patrial 580* (Bunch-Kaufman) diagonal pivoting method. 581* 582 ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN 583* 584* CHPTRF 585* 586 SRNAMT = 'CHPTRF' 587 INFOT = 1 588 CALL CHPTRF( '/', 0, A, IP, INFO ) 589 CALL CHKXER( 'CHPTRF', INFOT, NOUT, LERR, OK ) 590 INFOT = 2 591 CALL CHPTRF( 'U', -1, A, IP, INFO ) 592 CALL CHKXER( 'CHPTRF', INFOT, NOUT, LERR, OK ) 593* 594* CHPTRI 595* 596 SRNAMT = 'CHPTRI' 597 INFOT = 1 598 CALL CHPTRI( '/', 0, A, IP, W, INFO ) 599 CALL CHKXER( 'CHPTRI', INFOT, NOUT, LERR, OK ) 600 INFOT = 2 601 CALL CHPTRI( 'U', -1, A, IP, W, INFO ) 602 CALL CHKXER( 'CHPTRI', INFOT, NOUT, LERR, OK ) 603* 604* CHPTRS 605* 606 SRNAMT = 'CHPTRS' 607 INFOT = 1 608 CALL CHPTRS( '/', 0, 0, A, IP, B, 1, INFO ) 609 CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK ) 610 INFOT = 2 611 CALL CHPTRS( 'U', -1, 0, A, IP, B, 1, INFO ) 612 CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK ) 613 INFOT = 3 614 CALL CHPTRS( 'U', 0, -1, A, IP, B, 1, INFO ) 615 CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK ) 616 INFOT = 7 617 CALL CHPTRS( 'U', 2, 1, A, IP, B, 1, INFO ) 618 CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK ) 619* 620* CHPRFS 621* 622 SRNAMT = 'CHPRFS' 623 INFOT = 1 624 CALL CHPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R, 625 $ INFO ) 626 CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK ) 627 INFOT = 2 628 CALL CHPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R, 629 $ INFO ) 630 CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK ) 631 INFOT = 3 632 CALL CHPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R, 633 $ INFO ) 634 CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK ) 635 INFOT = 8 636 CALL CHPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R, 637 $ INFO ) 638 CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK ) 639 INFOT = 10 640 CALL CHPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R, 641 $ INFO ) 642 CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK ) 643* 644* CHPCON 645* 646 SRNAMT = 'CHPCON' 647 INFOT = 1 648 CALL CHPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO ) 649 CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK ) 650 INFOT = 2 651 CALL CHPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO ) 652 CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK ) 653 INFOT = 5 654 CALL CHPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO ) 655 CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK ) 656 END IF 657* 658* Print a summary line. 659* 660 CALL ALAESM( PATH, OK, NOUT ) 661* 662 RETURN 663* 664* End of CERRHE 665* 666 END 667