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