1*> \brief \b ALAHD 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 ALAHD( IOUNIT, PATH ) 12* 13* .. Scalar Arguments .. 14* CHARACTER*3 PATH 15* INTEGER IOUNIT 16* .. 17* 18* 19*> \par Purpose: 20* ============= 21*> 22*> \verbatim 23*> 24*> ALAHD prints header information for the different test paths. 25*> \endverbatim 26* 27* Arguments: 28* ========== 29* 30*> \param[in] IOUNIT 31*> \verbatim 32*> IOUNIT is INTEGER 33*> The unit number to which the header information should be 34*> printed. 35*> \endverbatim 36*> 37*> \param[in] PATH 38*> \verbatim 39*> PATH is CHARACTER*3 40*> The name of the path for which the header information is to 41*> be printed. Current paths are 42*> _GE: General matrices 43*> _GB: General band 44*> _GT: General Tridiagonal 45*> _PO: Symmetric or Hermitian positive definite 46*> _PS: Symmetric or Hermitian positive semi-definite 47*> _PP: Symmetric or Hermitian positive definite packed 48*> _PB: Symmetric or Hermitian positive definite band 49*> _PT: Symmetric or Hermitian positive definite tridiagonal 50*> _SY: Symmetric indefinite, 51*> with partial (Bunch-Kaufman) pivoting 52*> _SR: Symmetric indefinite, 53*> with rook (bounded Bunch-Kaufman) pivoting 54*> _SK: Symmetric indefinite, 55*> with rook (bounded Bunch-Kaufman) pivoting 56*> ( new storage format for factors: 57*> L and diagonal of D is stored in A, 58*> subdiagonal of D is stored in E ) 59*> _SP: Symmetric indefinite packed, 60*> with partial (Bunch-Kaufman) pivoting 61*> _HA: (complex) Hermitian , 62*> with Aasen Algorithm 63*> _HE: (complex) Hermitian indefinite, 64*> with partial (Bunch-Kaufman) pivoting 65*> _HR: (complex) Hermitian indefinite, 66*> with rook (bounded Bunch-Kaufman) pivoting 67*> _HK: (complex) Hermitian indefinite, 68*> with rook (bounded Bunch-Kaufman) pivoting 69*> ( new storage format for factors: 70*> L and diagonal of D is stored in A, 71*> subdiagonal of D is stored in E ) 72*> _HP: (complex) Hermitian indefinite packed, 73*> with partial (Bunch-Kaufman) pivoting 74*> _TR: Triangular 75*> _TP: Triangular packed 76*> _TB: Triangular band 77*> _QR: QR (general matrices) 78*> _LQ: LQ (general matrices) 79*> _QL: QL (general matrices) 80*> _RQ: RQ (general matrices) 81*> _QP: QR with column pivoting 82*> _TZ: Trapezoidal 83*> _LS: Least Squares driver routines 84*> _LU: LU variants 85*> _CH: Cholesky variants 86*> _QS: QR variants 87*> _QT: QRT (general matrices) 88*> _QX: QRT (triangular-pentagonal matrices) 89*> The first character must be one of S, D, C, or Z (C or Z only 90*> if complex). 91*> \endverbatim 92* 93* Authors: 94* ======== 95* 96*> \author Univ. of Tennessee 97*> \author Univ. of California Berkeley 98*> \author Univ. of Colorado Denver 99*> \author NAG Ltd. 100* 101*> \date December 2016 102* 103*> \ingroup aux_lin 104* 105* ===================================================================== 106 SUBROUTINE ALAHD( IOUNIT, PATH ) 107* 108* -- LAPACK test routine (version 3.7.0) -- 109* -- LAPACK is a software package provided by Univ. of Tennessee, -- 110* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 111* December 2016 112* 113* .. Scalar Arguments .. 114 CHARACTER*3 PATH 115 INTEGER IOUNIT 116* .. 117* 118* ===================================================================== 119* 120* .. Local Scalars .. 121 LOGICAL CORZ, SORD 122 CHARACTER C1, C3 123 CHARACTER*2 P2 124 CHARACTER*4 EIGCNM 125 CHARACTER*32 SUBNAM 126 CHARACTER*9 SYM 127* .. 128* .. External Functions .. 129 LOGICAL LSAME, LSAMEN 130 EXTERNAL LSAME, LSAMEN 131* .. 132* .. Intrinsic Functions .. 133 INTRINSIC LEN_TRIM 134* .. 135* .. Executable Statements .. 136* 137 IF( IOUNIT.LE.0 ) 138 $ RETURN 139 C1 = PATH( 1: 1 ) 140 C3 = PATH( 3: 3 ) 141 P2 = PATH( 2: 3 ) 142 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' ) 143 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' ) 144 IF( .NOT.( SORD .OR. CORZ ) ) 145 $ RETURN 146* 147 IF( LSAMEN( 2, P2, 'GE' ) ) THEN 148* 149* GE: General dense 150* 151 WRITE( IOUNIT, FMT = 9999 )PATH 152 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 153 WRITE( IOUNIT, FMT = 9979 ) 154 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 155 WRITE( IOUNIT, FMT = 9962 )1 156 WRITE( IOUNIT, FMT = 9961 )2 157 WRITE( IOUNIT, FMT = 9960 )3 158 WRITE( IOUNIT, FMT = 9959 )4 159 WRITE( IOUNIT, FMT = 9958 )5 160 WRITE( IOUNIT, FMT = 9957 )6 161 WRITE( IOUNIT, FMT = 9956 )7 162 WRITE( IOUNIT, FMT = 9955 )8 163 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 164* 165 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN 166* 167* GB: General band 168* 169 WRITE( IOUNIT, FMT = 9998 )PATH 170 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 171 WRITE( IOUNIT, FMT = 9978 ) 172 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 173 WRITE( IOUNIT, FMT = 9962 )1 174 WRITE( IOUNIT, FMT = 9960 )2 175 WRITE( IOUNIT, FMT = 9959 )3 176 WRITE( IOUNIT, FMT = 9958 )4 177 WRITE( IOUNIT, FMT = 9957 )5 178 WRITE( IOUNIT, FMT = 9956 )6 179 WRITE( IOUNIT, FMT = 9955 )7 180 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 181* 182 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN 183* 184* GT: General tridiagonal 185* 186 WRITE( IOUNIT, FMT = 9997 )PATH 187 WRITE( IOUNIT, FMT = 9977 ) 188 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 189 WRITE( IOUNIT, FMT = 9962 )1 190 WRITE( IOUNIT, FMT = 9960 )2 191 WRITE( IOUNIT, FMT = 9959 )3 192 WRITE( IOUNIT, FMT = 9958 )4 193 WRITE( IOUNIT, FMT = 9957 )5 194 WRITE( IOUNIT, FMT = 9956 )6 195 WRITE( IOUNIT, FMT = 9955 )7 196 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 197* 198 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) ) THEN 199* 200* PO: Positive definite full 201* PP: Positive definite packed 202* 203 IF( SORD ) THEN 204 SYM = 'Symmetric' 205 ELSE 206 SYM = 'Hermitian' 207 END IF 208 IF( LSAME( C3, 'O' ) ) THEN 209 WRITE( IOUNIT, FMT = 9996 )PATH, SYM 210 ELSE 211 WRITE( IOUNIT, FMT = 9995 )PATH, SYM 212 END IF 213 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 214 WRITE( IOUNIT, FMT = 9975 )PATH 215 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 216 WRITE( IOUNIT, FMT = 9954 )1 217 WRITE( IOUNIT, FMT = 9961 )2 218 WRITE( IOUNIT, FMT = 9960 )3 219 WRITE( IOUNIT, FMT = 9959 )4 220 WRITE( IOUNIT, FMT = 9958 )5 221 WRITE( IOUNIT, FMT = 9957 )6 222 WRITE( IOUNIT, FMT = 9956 )7 223 WRITE( IOUNIT, FMT = 9955 )8 224 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 225* 226 ELSE IF( LSAMEN( 2, P2, 'PS' ) ) THEN 227* 228* PS: Positive semi-definite full 229* 230 IF( SORD ) THEN 231 SYM = 'Symmetric' 232 ELSE 233 SYM = 'Hermitian' 234 END IF 235 IF( LSAME( C1, 'S' ) .OR. LSAME( C1, 'C' ) ) THEN 236 EIGCNM = '1E04' 237 ELSE 238 EIGCNM = '1D12' 239 END IF 240 WRITE( IOUNIT, FMT = 9995 )PATH, SYM 241 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 242 WRITE( IOUNIT, FMT = 8973 )EIGCNM, EIGCNM, EIGCNM 243 WRITE( IOUNIT, FMT = '( '' Difference:'' )' ) 244 WRITE( IOUNIT, FMT = 8972 )C1 245 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' ) 246 WRITE( IOUNIT, FMT = 8950 ) 247 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 248 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN 249* 250* PB: Positive definite band 251* 252 IF( SORD ) THEN 253 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric' 254 ELSE 255 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian' 256 END IF 257 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 258 WRITE( IOUNIT, FMT = 9973 )PATH 259 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 260 WRITE( IOUNIT, FMT = 9954 )1 261 WRITE( IOUNIT, FMT = 9960 )2 262 WRITE( IOUNIT, FMT = 9959 )3 263 WRITE( IOUNIT, FMT = 9958 )4 264 WRITE( IOUNIT, FMT = 9957 )5 265 WRITE( IOUNIT, FMT = 9956 )6 266 WRITE( IOUNIT, FMT = 9955 )7 267 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 268* 269 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN 270* 271* PT: Positive definite tridiagonal 272* 273 IF( SORD ) THEN 274 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric' 275 ELSE 276 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian' 277 END IF 278 WRITE( IOUNIT, FMT = 9976 ) 279 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 280 WRITE( IOUNIT, FMT = 9952 )1 281 WRITE( IOUNIT, FMT = 9960 )2 282 WRITE( IOUNIT, FMT = 9959 )3 283 WRITE( IOUNIT, FMT = 9958 )4 284 WRITE( IOUNIT, FMT = 9957 )5 285 WRITE( IOUNIT, FMT = 9956 )6 286 WRITE( IOUNIT, FMT = 9955 )7 287 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 288* 289 ELSE IF( LSAMEN( 2, P2, 'SY' ) ) THEN 290* 291* SY: Symmetric indefinite full, 292* with partial (Bunch-Kaufman) pivoting algorithm 293* 294 IF( LSAME( C3, 'Y' ) ) THEN 295 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 296 ELSE 297 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 298 END IF 299 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 300 IF( SORD ) THEN 301 WRITE( IOUNIT, FMT = 9972 ) 302 ELSE 303 WRITE( IOUNIT, FMT = 9971 ) 304 END IF 305 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 306 WRITE( IOUNIT, FMT = 9953 )1 307 WRITE( IOUNIT, FMT = 9961 )2 308 WRITE( IOUNIT, FMT = 9960 )3 309 WRITE( IOUNIT, FMT = 9960 )4 310 WRITE( IOUNIT, FMT = 9959 )5 311 WRITE( IOUNIT, FMT = 9958 )6 312 WRITE( IOUNIT, FMT = 9956 )7 313 WRITE( IOUNIT, FMT = 9957 )8 314 WRITE( IOUNIT, FMT = 9955 )9 315 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 316* 317 ELSE IF( LSAMEN( 2, P2, 'SR' ) .OR. LSAMEN( 2, P2, 'SK') ) THEN 318* 319* SR: Symmetric indefinite full, 320* with rook (bounded Bunch-Kaufman) pivoting algorithm 321* 322* SK: Symmetric indefinite full, 323* with rook (bounded Bunch-Kaufman) pivoting algorithm, 324* ( new storage format for factors: 325* L and diagonal of D is stored in A, 326* subdiagonal of D is stored in E ) 327* 328 WRITE( IOUNIT, FMT = 9892 )PATH, 'Symmetric' 329* 330 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 331 IF( SORD ) THEN 332 WRITE( IOUNIT, FMT = 9972 ) 333 ELSE 334 WRITE( IOUNIT, FMT = 9971 ) 335 END IF 336* 337 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 338 WRITE( IOUNIT, FMT = 9953 )1 339 WRITE( IOUNIT, FMT = 9961 )2 340 WRITE( IOUNIT, FMT = 9927 )3 341 WRITE( IOUNIT, FMT = 9928 ) 342 WRITE( IOUNIT, FMT = 9926 )4 343 WRITE( IOUNIT, FMT = 9928 ) 344 WRITE( IOUNIT, FMT = 9960 )5 345 WRITE( IOUNIT, FMT = 9959 )6 346 WRITE( IOUNIT, FMT = 9955 )7 347 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 348* 349 ELSE IF( LSAMEN( 2, P2, 'SP' ) ) THEN 350* 351* SP: Symmetric indefinite packed, 352* with partial (Bunch-Kaufman) pivoting algorithm 353* 354 IF( LSAME( C3, 'Y' ) ) THEN 355 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 356 ELSE 357 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 358 END IF 359 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 360 IF( SORD ) THEN 361 WRITE( IOUNIT, FMT = 9972 ) 362 ELSE 363 WRITE( IOUNIT, FMT = 9971 ) 364 END IF 365 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 366 WRITE( IOUNIT, FMT = 9953 )1 367 WRITE( IOUNIT, FMT = 9961 )2 368 WRITE( IOUNIT, FMT = 9960 )3 369 WRITE( IOUNIT, FMT = 9959 )4 370 WRITE( IOUNIT, FMT = 9958 )5 371 WRITE( IOUNIT, FMT = 9956 )6 372 WRITE( IOUNIT, FMT = 9957 )7 373 WRITE( IOUNIT, FMT = 9955 )8 374 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 375* 376 ELSE IF( LSAMEN( 2, P2, 'HA' ) ) THEN 377* 378* HA: Hermitian, 379* with Assen Algorithm 380* 381 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 382* 383 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 384 WRITE( IOUNIT, FMT = 9972 ) 385* 386 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 387 WRITE( IOUNIT, FMT = 9953 )1 388 WRITE( IOUNIT, FMT = 9961 )2 389 WRITE( IOUNIT, FMT = 9960 )3 390 WRITE( IOUNIT, FMT = 9960 )4 391 WRITE( IOUNIT, FMT = 9959 )5 392 WRITE( IOUNIT, FMT = 9958 )6 393 WRITE( IOUNIT, FMT = 9956 )7 394 WRITE( IOUNIT, FMT = 9957 )8 395 WRITE( IOUNIT, FMT = 9955 )9 396 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 397* 398 ELSE IF( LSAMEN( 2, P2, 'HE' ) ) THEN 399* 400* HE: Hermitian indefinite full, 401* with partial (Bunch-Kaufman) pivoting algorithm 402* 403 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 404* 405 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 406 WRITE( IOUNIT, FMT = 9972 ) 407* 408 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 409 WRITE( IOUNIT, FMT = 9953 )1 410 WRITE( IOUNIT, FMT = 9961 )2 411 WRITE( IOUNIT, FMT = 9960 )3 412 WRITE( IOUNIT, FMT = 9960 )4 413 WRITE( IOUNIT, FMT = 9959 )5 414 WRITE( IOUNIT, FMT = 9958 )6 415 WRITE( IOUNIT, FMT = 9956 )7 416 WRITE( IOUNIT, FMT = 9957 )8 417 WRITE( IOUNIT, FMT = 9955 )9 418 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 419* 420 ELSE IF( LSAMEN( 2, P2, 'HR' ) .OR. LSAMEN( 2, P2, 'HR' ) ) THEN 421* 422* HR: Hermitian indefinite full, 423* with rook (bounded Bunch-Kaufman) pivoting algorithm 424* 425* HK: Hermitian indefinite full, 426* with rook (bounded Bunch-Kaufman) pivoting algorithm, 427* ( new storage format for factors: 428* L and diagonal of D is stored in A, 429* subdiagonal of D is stored in E ) 430* 431 WRITE( IOUNIT, FMT = 9892 )PATH, 'Hermitian' 432* 433 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 434 WRITE( IOUNIT, FMT = 9972 ) 435* 436 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 437 WRITE( IOUNIT, FMT = 9953 )1 438 WRITE( IOUNIT, FMT = 9961 )2 439 WRITE( IOUNIT, FMT = 9927 )3 440 WRITE( IOUNIT, FMT = 9928 ) 441 WRITE( IOUNIT, FMT = 9926 )4 442 WRITE( IOUNIT, FMT = 9928 ) 443 WRITE( IOUNIT, FMT = 9960 )5 444 WRITE( IOUNIT, FMT = 9959 )6 445 WRITE( IOUNIT, FMT = 9955 )7 446 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 447* 448 ELSE IF( LSAMEN( 2, P2, 'HP' ) ) THEN 449* 450* HP: Hermitian indefinite packed, 451* with partial (Bunch-Kaufman) pivoting algorithm 452* 453 IF( LSAME( C3, 'E' ) ) THEN 454 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 455 ELSE 456 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian' 457 END IF 458 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 459 WRITE( IOUNIT, FMT = 9972 ) 460 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 461 WRITE( IOUNIT, FMT = 9953 )1 462 WRITE( IOUNIT, FMT = 9961 )2 463 WRITE( IOUNIT, FMT = 9960 )3 464 WRITE( IOUNIT, FMT = 9959 )4 465 WRITE( IOUNIT, FMT = 9958 )5 466 WRITE( IOUNIT, FMT = 9956 )6 467 WRITE( IOUNIT, FMT = 9957 )7 468 WRITE( IOUNIT, FMT = 9955 )8 469 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 470* 471 ELSE IF( LSAMEN( 2, P2, 'TR' ) .OR. LSAMEN( 2, P2, 'TP' ) ) THEN 472* 473* TR: Triangular full 474* TP: Triangular packed 475* 476 IF( LSAME( C3, 'R' ) ) THEN 477 WRITE( IOUNIT, FMT = 9990 )PATH 478 SUBNAM = PATH( 1: 1 ) // 'LATRS' 479 ELSE 480 WRITE( IOUNIT, FMT = 9989 )PATH 481 SUBNAM = PATH( 1: 1 ) // 'LATPS' 482 END IF 483 WRITE( IOUNIT, FMT = 9966 )PATH 484 WRITE( IOUNIT, FMT = 9965 )SUBNAM(1:LEN_TRIM( SUBNAM )) 485 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 486 WRITE( IOUNIT, FMT = 9961 )1 487 WRITE( IOUNIT, FMT = 9960 )2 488 WRITE( IOUNIT, FMT = 9959 )3 489 WRITE( IOUNIT, FMT = 9958 )4 490 WRITE( IOUNIT, FMT = 9957 )5 491 WRITE( IOUNIT, FMT = 9956 )6 492 WRITE( IOUNIT, FMT = 9955 )7 493 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 8 494 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 495* 496 ELSE IF( LSAMEN( 2, P2, 'TB' ) ) THEN 497* 498* TB: Triangular band 499* 500 WRITE( IOUNIT, FMT = 9988 )PATH 501 SUBNAM = PATH( 1: 1 ) // 'LATBS' 502 WRITE( IOUNIT, FMT = 9964 )PATH 503 WRITE( IOUNIT, FMT = 9963 )SUBNAM(1:LEN_TRIM( SUBNAM )) 504 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 505 WRITE( IOUNIT, FMT = 9960 )1 506 WRITE( IOUNIT, FMT = 9959 )2 507 WRITE( IOUNIT, FMT = 9958 )3 508 WRITE( IOUNIT, FMT = 9957 )4 509 WRITE( IOUNIT, FMT = 9956 )5 510 WRITE( IOUNIT, FMT = 9955 )6 511 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 7 512 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 513* 514 ELSE IF( LSAMEN( 2, P2, 'QR' ) ) THEN 515* 516* QR decomposition of rectangular matrices 517* 518 WRITE( IOUNIT, FMT = 9987 )PATH, 'QR' 519 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 520 WRITE( IOUNIT, FMT = 9970 ) 521 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 522 WRITE( IOUNIT, FMT = 9950 )1 523 WRITE( IOUNIT, FMT = 6950 )8 524 WRITE( IOUNIT, FMT = 9946 )2 525 WRITE( IOUNIT, FMT = 9944 )3, 'M' 526 WRITE( IOUNIT, FMT = 9943 )4, 'M' 527 WRITE( IOUNIT, FMT = 9942 )5, 'M' 528 WRITE( IOUNIT, FMT = 9941 )6, 'M' 529 WRITE( IOUNIT, FMT = 9960 )7 530 WRITE( IOUNIT, FMT = 6660 )9 531 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 532* 533 ELSE IF( LSAMEN( 2, P2, 'LQ' ) ) THEN 534* 535* LQ decomposition of rectangular matrices 536* 537 WRITE( IOUNIT, FMT = 9987 )PATH, 'LQ' 538 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 539 WRITE( IOUNIT, FMT = 9970 ) 540 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 541 WRITE( IOUNIT, FMT = 9949 )1 542 WRITE( IOUNIT, FMT = 9945 )2 543 WRITE( IOUNIT, FMT = 9944 )3, 'N' 544 WRITE( IOUNIT, FMT = 9943 )4, 'N' 545 WRITE( IOUNIT, FMT = 9942 )5, 'N' 546 WRITE( IOUNIT, FMT = 9941 )6, 'N' 547 WRITE( IOUNIT, FMT = 9960 )7 548 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 549* 550 ELSE IF( LSAMEN( 2, P2, 'QL' ) ) THEN 551* 552* QL decomposition of rectangular matrices 553* 554 WRITE( IOUNIT, FMT = 9987 )PATH, 'QL' 555 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 556 WRITE( IOUNIT, FMT = 9970 ) 557 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 558 WRITE( IOUNIT, FMT = 9948 )1 559 WRITE( IOUNIT, FMT = 9946 )2 560 WRITE( IOUNIT, FMT = 9944 )3, 'M' 561 WRITE( IOUNIT, FMT = 9943 )4, 'M' 562 WRITE( IOUNIT, FMT = 9942 )5, 'M' 563 WRITE( IOUNIT, FMT = 9941 )6, 'M' 564 WRITE( IOUNIT, FMT = 9960 )7 565 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 566* 567 ELSE IF( LSAMEN( 2, P2, 'RQ' ) ) THEN 568* 569* RQ decomposition of rectangular matrices 570* 571 WRITE( IOUNIT, FMT = 9987 )PATH, 'RQ' 572 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 573 WRITE( IOUNIT, FMT = 9970 ) 574 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 575 WRITE( IOUNIT, FMT = 9947 )1 576 WRITE( IOUNIT, FMT = 9945 )2 577 WRITE( IOUNIT, FMT = 9944 )3, 'N' 578 WRITE( IOUNIT, FMT = 9943 )4, 'N' 579 WRITE( IOUNIT, FMT = 9942 )5, 'N' 580 WRITE( IOUNIT, FMT = 9941 )6, 'N' 581 WRITE( IOUNIT, FMT = 9960 )7 582 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 583* 584 ELSE IF( LSAMEN( 2, P2, 'QP' ) ) THEN 585* 586* QR decomposition with column pivoting 587* 588 WRITE( IOUNIT, FMT = 9986 )PATH 589 WRITE( IOUNIT, FMT = 9969 ) 590 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 591 WRITE( IOUNIT, FMT = 9940 )1 592 WRITE( IOUNIT, FMT = 9939 )2 593 WRITE( IOUNIT, FMT = 9938 )3 594 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 595* 596 ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN 597* 598* TZ: Trapezoidal 599* 600 WRITE( IOUNIT, FMT = 9985 )PATH 601 WRITE( IOUNIT, FMT = 9968 ) 602 WRITE( IOUNIT, FMT = 9929 )C1 603 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 604 WRITE( IOUNIT, FMT = 9940 )1 605 WRITE( IOUNIT, FMT = 9937 )2 606 WRITE( IOUNIT, FMT = 9938 )3 607 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 608* 609 ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN 610* 611* LS: Least Squares driver routines for 612* LS, LSD, LSS, LSX and LSY. 613* 614 WRITE( IOUNIT, FMT = 9984 )PATH 615 WRITE( IOUNIT, FMT = 9967 ) 616 WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1 617 WRITE( IOUNIT, FMT = 9935 )1 618 WRITE( IOUNIT, FMT = 9931 )2 619 WRITE( IOUNIT, FMT = 9933 )3 620 WRITE( IOUNIT, FMT = 9935 )4 621 WRITE( IOUNIT, FMT = 9934 )5 622 WRITE( IOUNIT, FMT = 9932 )6 623 WRITE( IOUNIT, FMT = 9920 ) 624 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 625* 626 ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN 627* 628* LU factorization variants 629* 630 WRITE( IOUNIT, FMT = 9983 )PATH 631 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 632 WRITE( IOUNIT, FMT = 9979 ) 633 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' ) 634 WRITE( IOUNIT, FMT = 9962 )1 635 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 636* 637 ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN 638* 639* Cholesky factorization variants 640* 641 WRITE( IOUNIT, FMT = 9982 )PATH 642 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 643 WRITE( IOUNIT, FMT = 9974 ) 644 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' ) 645 WRITE( IOUNIT, FMT = 9954 )1 646 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 647* 648 ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN 649* 650* QR factorization variants 651* 652 WRITE( IOUNIT, FMT = 9981 )PATH 653 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 654 WRITE( IOUNIT, FMT = 9970 ) 655 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 656* 657 ELSE IF( LSAMEN( 2, P2, 'QT' ) ) THEN 658* 659* QRT (general matrices) 660* 661 WRITE( IOUNIT, FMT = 8000 ) PATH 662 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 663 WRITE( IOUNIT, FMT = 8011 ) 1 664 WRITE( IOUNIT, FMT = 8012 ) 2 665 WRITE( IOUNIT, FMT = 8013 ) 3 666 WRITE( IOUNIT, FMT = 8014 ) 4 667 WRITE( IOUNIT, FMT = 8015 ) 5 668 WRITE( IOUNIT, FMT = 8016 ) 6 669* 670 ELSE IF( LSAMEN( 2, P2, 'QX' ) ) THEN 671* 672* QRT (triangular-pentagonal) 673* 674 WRITE( IOUNIT, FMT = 8001 ) PATH 675 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 676 WRITE( IOUNIT, FMT = 8017 ) 1 677 WRITE( IOUNIT, FMT = 8018 ) 2 678 WRITE( IOUNIT, FMT = 8019 ) 3 679 WRITE( IOUNIT, FMT = 8020 ) 4 680 WRITE( IOUNIT, FMT = 8021 ) 5 681 WRITE( IOUNIT, FMT = 8022 ) 6 682* 683 ELSE IF( LSAMEN( 2, P2, 'TQ' ) ) THEN 684* 685* QRT (triangular-pentagonal) 686* 687 WRITE( IOUNIT, FMT = 8002 ) PATH 688 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 689 WRITE( IOUNIT, FMT = 8023 ) 1 690 WRITE( IOUNIT, FMT = 8024 ) 2 691 WRITE( IOUNIT, FMT = 8025 ) 3 692 WRITE( IOUNIT, FMT = 8026 ) 4 693 WRITE( IOUNIT, FMT = 8027 ) 5 694 WRITE( IOUNIT, FMT = 8028 ) 6 695* 696 ELSE IF( LSAMEN( 2, P2, 'XQ' ) ) THEN 697* 698* QRT (triangular-pentagonal) 699* 700 WRITE( IOUNIT, FMT = 8003 ) PATH 701 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 702 WRITE( IOUNIT, FMT = 8029 ) 1 703 WRITE( IOUNIT, FMT = 8030 ) 2 704 WRITE( IOUNIT, FMT = 8031 ) 3 705 WRITE( IOUNIT, FMT = 8032 ) 4 706 WRITE( IOUNIT, FMT = 8033 ) 5 707 WRITE( IOUNIT, FMT = 8034 ) 6 708* 709 ELSE IF( LSAMEN( 2, P2, 'TS' ) ) THEN 710* 711* QRT (triangular-pentagonal) 712* 713 WRITE( IOUNIT, FMT = 8004 ) PATH 714 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 715 WRITE( IOUNIT, FMT = 8035 ) 1 716 WRITE( IOUNIT, FMT = 8036 ) 2 717 WRITE( IOUNIT, FMT = 8037 ) 3 718 WRITE( IOUNIT, FMT = 8038 ) 4 719 WRITE( IOUNIT, FMT = 8039 ) 5 720 WRITE( IOUNIT, FMT = 8040 ) 6 721* 722 ELSE 723* 724* Print error message if no header is available. 725* 726 WRITE( IOUNIT, FMT = 9980 )PATH 727 END IF 728* 729* First line of header 730* 731 9999 FORMAT( / 1X, A3, ': General dense matrices' ) 732 9998 FORMAT( / 1X, A3, ': General band matrices' ) 733 9997 FORMAT( / 1X, A3, ': General tridiagonal' ) 734 9996 FORMAT( / 1X, A3, ': ', A9, ' positive definite matrices' ) 735 9995 FORMAT( / 1X, A3, ': ', A9, ' positive definite packed matrices' 736 $ ) 737 9994 FORMAT( / 1X, A3, ': ', A9, ' positive definite band matrices' ) 738 9993 FORMAT( / 1X, A3, ': ', A9, ' positive definite tridiagonal' ) 739 9992 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices', 740 $ ', partial (Bunch-Kaufman) pivoting' ) 741 9991 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices', 742 $ ', partial (Bunch-Kaufman) pivoting' ) 743 9892 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices', 744 $ ', "rook" (bounded Bunch-Kaufman) pivoting' ) 745 9891 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices', 746 $ ', "rook" (bounded Bunch-Kaufman) pivoting' ) 747 9990 FORMAT( / 1X, A3, ': Triangular matrices' ) 748 9989 FORMAT( / 1X, A3, ': Triangular packed matrices' ) 749 9988 FORMAT( / 1X, A3, ': Triangular band matrices' ) 750 9987 FORMAT( / 1X, A3, ': ', A2, ' factorization of general matrices' 751 $ ) 752 9986 FORMAT( / 1X, A3, ': QR factorization with column pivoting' ) 753 9985 FORMAT( / 1X, A3, ': RQ factorization of trapezoidal matrix' ) 754 9984 FORMAT( / 1X, A3, ': Least squares driver routines' ) 755 9983 FORMAT( / 1X, A3, ': LU factorization variants' ) 756 9982 FORMAT( / 1X, A3, ': Cholesky factorization variants' ) 757 9981 FORMAT( / 1X, A3, ': QR factorization variants' ) 758 9980 FORMAT( / 1X, A3, ': No header available' ) 759 8000 FORMAT( / 1X, A3, ': QRT factorization for general matrices' ) 760 8001 FORMAT( / 1X, A3, ': QRT factorization for ', 761 $ 'triangular-pentagonal matrices' ) 762 8002 FORMAT( / 1X, A3, ': LQT factorization for general matrices' ) 763 8003 FORMAT( / 1X, A3, ': LQT factorization for ', 764 $ 'triangular-pentagonal matrices' ) 765 8004 FORMAT( / 1X, A3, ': TS factorization for ', 766 $ 'tall-skiny or short-wide matrices' ) 767* 768* GE matrix types 769* 770 9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X, 771 $ '2. Upper triangular', 16X, 772 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 773 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS', 774 $ / 4X, '4. Random, CNDNUM = 2', 13X, 775 $ '10. Scaled near underflow', / 4X, '5. First column zero', 776 $ 14X, '11. Scaled near overflow', / 4X, 777 $ '6. Last column zero' ) 778* 779* GB matrix types 780* 781 9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 782 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 783 $ '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS', 784 $ / 4X, '3. Last column zero', 16X, 785 $ '7. Scaled near underflow', / 4X, 786 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' ) 787* 788* GT matrix types 789* 790 9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 791 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 792 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero', 793 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 794 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS', 795 $ 7X, '10. Last n/2 columns zero', / 4X, 796 $ '5. Scaled near underflow', 10X, 797 $ '11. Scaled near underflow', / 4X, 798 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 799* 800* PT matrix types 801* 802 9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 803 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 804 $ / 4X, '2. Random, CNDNUM = 2', 14X, 805 $ '8. First row and column zero', / 4X, 806 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 807 $ '9. Last row and column zero', / 4X, 808 $ '4. Random, CNDNUM = 0.1/EPS', 7X, 809 $ '10. Middle row and column zero', / 4X, 810 $ '5. Scaled near underflow', 10X, 811 $ '11. Scaled near underflow', / 4X, 812 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 813* 814* PO, PP matrix types 815* 816 9975 FORMAT( 4X, '1. Diagonal', 24X, 817 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 818 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 819 $ / 3X, '*3. First row and column zero', 7X, 820 $ '8. Scaled near underflow', / 3X, 821 $ '*4. Last row and column zero', 8X, 822 $ '9. Scaled near overflow', / 3X, 823 $ '*5. Middle row and column zero', / 3X, 824 $ '(* - tests error exits from ', A3, 825 $ 'TRF, no test ratios are computed)' ) 826* 827* CH matrix types 828* 829 9974 FORMAT( 4X, '1. Diagonal', 24X, 830 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 831 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 832 $ / 3X, '*3. First row and column zero', 7X, 833 $ '8. Scaled near underflow', / 3X, 834 $ '*4. Last row and column zero', 8X, 835 $ '9. Scaled near overflow', / 3X, 836 $ '*5. Middle row and column zero', / 3X, 837 $ '(* - tests error exits, no test ratios are computed)' ) 838* 839* PS matrix types 840* 841 8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X, 842 $ / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ', 843 $ 'D(RANK) = 1.0/', A4, / 3X, 844 $ '*4. Nonzero eigenvalues of: D(1)=1 and ', 845 $ ' D(2:RANK) = 1.0/', A4, / 3X, 846 $ '*5. Nonzero eigenvalues of: D(I) = ', A4, 847 $ '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X, 848 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 849 $ '7. Random, CNDNUM = 0.1/EPS', / 4X, 850 $ '8. Scaled near underflow', / 4X, '9. Scaled near overflow', 851 $ / 3X, '(* - Semi-definite tests )' ) 852 8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' ) 853* 854* PB matrix types 855* 856 9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 857 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X, 858 $ '*2. First row and column zero', 7X, 859 $ '6. Random, CNDNUM = 0.1/EPS', / 3X, 860 $ '*3. Last row and column zero', 8X, 861 $ '7. Scaled near underflow', / 3X, 862 $ '*4. Middle row and column zero', 6X, 863 $ '8. Scaled near overflow', / 3X, 864 $ '(* - tests error exits from ', A3, 865 $ 'TRF, no test ratios are computed)' ) 866* 867* SSY, SSR, SSP, CHE, CHR, CHP matrix types 868* 869 9972 FORMAT( 4X, '1. Diagonal', 24X, 870 $ '6. Last n/2 rows and columns zero', / 4X, 871 $ '2. Random, CNDNUM = 2', 14X, 872 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 873 $ '3. First row and column zero', 7X, 874 $ '8. Random, CNDNUM = 0.1/EPS', / 4X, 875 $ '4. Last row and column zero', 8X, 876 $ '9. Scaled near underflow', / 4X, 877 $ '5. Middle row and column zero', 5X, 878 $ '10. Scaled near overflow' ) 879* 880* CSY, CSR, CSP matrix types 881* 882 9971 FORMAT( 4X, '1. Diagonal', 24X, 883 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 884 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS', 885 $ / 4X, '3. First row and column zero', 7X, 886 $ '9. Scaled near underflow', / 4X, 887 $ '4. Last row and column zero', 7X, 888 $ '10. Scaled near overflow', / 4X, 889 $ '5. Middle row and column zero', 5X, 890 $ '11. Block diagonal matrix', / 4X, 891 $ '6. Last n/2 rows and columns zero' ) 892* 893* QR matrix types 894* 895 9970 FORMAT( 4X, '1. Diagonal', 24X, 896 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 897 $ '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS', 898 $ / 4X, '3. Lower triangular', 16X, 899 $ '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2', 900 $ 14X, '8. Scaled near overflow' ) 901* 902* QP matrix types 903* 904 9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X, 905 $ '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X, 906 $ '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed', 907 $ / 4X, '3. Geometric distribution', 10X, 908 $ '6. Every second column fixed' ) 909* 910* TZ matrix types 911* 912 9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X, 913 $ '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X, 914 $ '3. Geometric distribution' ) 915* 916* LS matrix types 917* 918 9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):', 919 $ / 4X, '1 and 4. Normal scaling', / 4X, 920 $ '2 and 5. Scaled near overflow', / 4X, 921 $ '3 and 6. Scaled near underflow' ) 922* 923* TR, TP matrix types 924* 925 9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X, 926 $ '1. Diagonal', 24X, '6. Scaled near overflow', / 4X, 927 $ '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X, 928 $ '3. Random, CNDNUM = sqrt(0.1/EPS) ', 929 $ '8. Unit triangular, CNDNUM = 2', / 4X, 930 $ '4. Random, CNDNUM = 0.1/EPS', 8X, 931 $ '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X, 932 $ '5. Scaled near underflow', 10X, 933 $ '10. Unit, CNDNUM = 0.1/EPS' ) 934 9965 FORMAT( ' Special types for testing ', A, ':', / 3X, 935 $ '11. Matrix elements are O(1), large right hand side', / 3X, 936 $ '12. First diagonal causes overflow,', 937 $ ' offdiagonal column norms < 1', / 3X, 938 $ '13. First diagonal causes overflow,', 939 $ ' offdiagonal column norms > 1', / 3X, 940 $ '14. Growth factor underflows, solution does not overflow', 941 $ / 3X, '15. Small diagonal causes gradual overflow', / 3X, 942 $ '16. One zero diagonal element', / 3X, 943 $ '17. Large offdiagonals cause overflow when adding a column' 944 $ , / 3X, '18. Unit triangular with large right hand side' ) 945* 946* TB matrix types 947* 948 9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X, 949 $ '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X, 950 $ '2. Random, CNDNUM = sqrt(0.1/EPS) ', 951 $ '7. Unit triangular, CNDNUM = 2', / 4X, 952 $ '3. Random, CNDNUM = 0.1/EPS', 8X, 953 $ '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X, 954 $ '4. Scaled near underflow', 11X, 955 $ '9. Unit, CNDNUM = 0.1/EPS', / 4X, 956 $ '5. Scaled near overflow' ) 957 9963 FORMAT( ' Special types for testing ', A, ':', / 3X, 958 $ '10. Matrix elements are O(1), large right hand side', / 3X, 959 $ '11. First diagonal causes overflow,', 960 $ ' offdiagonal column norms < 1', / 3X, 961 $ '12. First diagonal causes overflow,', 962 $ ' offdiagonal column norms > 1', / 3X, 963 $ '13. Growth factor underflows, solution does not overflow', 964 $ / 3X, '14. Small diagonal causes gradual overflow', / 3X, 965 $ '15. One zero diagonal element', / 3X, 966 $ '16. Large offdiagonals cause overflow when adding a column' 967 $ , / 3X, '17. Unit triangular with large right hand side' ) 968* 969* Test ratios 970* 971 9962 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' ) 972 9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ', 973 $ '( N * norm(A) * norm(AINV) * EPS )' ) 974 9960 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 975 $ '( norm(A) * norm(X) * EPS )' ) 976 6660 FORMAT( 3X, I2, ': diagonal is not non-negative') 977 9959 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 978 $ '( norm(XACT) * CNDNUM * EPS )' ) 979 9958 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 980 $ '( norm(XACT) * CNDNUM * EPS ), refined' ) 981 9957 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 982 $ '( norm(XACT) * (error bound) )' ) 983 9956 FORMAT( 3X, I2, ': (backward error) / EPS' ) 984 9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' ) 985 9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )', 986 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )' 987 $ ) 988 8950 FORMAT( 3X, 989 $ 'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )', 990 $ ', or', / 3X, 991 $ 'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' ) 992 9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )', 993 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 994 $ ) 995 9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )', 996 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 997 $ ) 998 9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2, 999 $ ': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' ) 1000 9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' ) 1001 6950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS ) 1002 $ [RFPG]' ) 1003 9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' ) 1004 9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' ) 1005 9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' ) 1006 9946 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' ) 1007 9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' ) / ( N * EPS )' ) 1008 9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C ) / ', '( ', A1, 1009 $ ' * norm(C) * EPS )' ) 1010 9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q ) / ', '( ', A1, 1011 $ ' * norm(C) * EPS )' ) 1012 9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1, 1013 $ ' * norm(C) * EPS )' ) 1014 9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1, 1015 $ ' * norm(C) * EPS )' ) 1016 9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ', 1017 $ '( M * norm(svd(R)) * EPS )' ) 1018 9939 FORMAT( 3X, I2, ': norm( A*P - Q*R ) / ( M * norm(A) * EPS )' 1019 $ ) 1020 9938 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' ) 1021 9937 FORMAT( 3X, I2, ': norm( A - R*Q ) / ( M * norm(A) * EPS )' 1022 $ ) 1023 9935 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 1024 $ '( max(M,N) * norm(A) * norm(X) * EPS )' ) 1025 9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ', 1026 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' ) 1027 9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ', 1028 $ '( min(M,N) * norm(svd(R)) * EPS )' ) 1029 9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' ) 1030 9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ', 1031 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X, 1032 $ 'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ', 1033 $ 'otherwise', / 7X, 1034 $ 'check if X is in the row space of A or A'' ', 1035 $ '(overdetermined case)' ) 1036 9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRZF):' ) 1037 9920 FORMAT( 3X, ' 7-10: same as 3-6', 3X, ' 11-14: same as 3-6' ) 1038 9921 FORMAT( ' Test ratios:', / ' (1-2: ', A1, 'GELS, 3-6: ', A1, 1039 $ 'GELSY, 7-10: ', A1, 'GELSS, 11-14: ', A1, 'GELSD, 15-16: ' 1040 $ A1, 'GETSLS)') 1041 9928 FORMAT( 7X, 'where ALPHA = ( 1 + SQRT( 17 ) ) / 8' ) 1042 9927 FORMAT( 3X, I2, ': ABS( Largest element in L )', / 12X, 1043 $ ' - ( 1 / ( 1 - ALPHA ) ) + THRESH' ) 1044 9926 FORMAT( 3X, I2, ': Largest 2-Norm of 2-by-2 pivots', / 12X, 1045 $ ' - ( ( 1 + ALPHA ) / ( 1 - ALPHA ) ) + THRESH' ) 1046 8011 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' ) 1047 8012 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' ) 1048 8013 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' ) 1049 8014 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )') 1050 8015 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' ) 1051 8016 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )') 1052 8017 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' ) 1053 8018 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' ) 1054 8019 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' ) 1055 8020 FORMAT(3X,I2, 1056 $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )') 1057 8021 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' ) 1058 8022 FORMAT(3X,I2, 1059 $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )') 1060 8023 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' ) 1061 8024 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' ) 1062 8025 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' ) 1063 8026 FORMAT(3X,I2, 1064 $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )') 1065 8027 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' ) 1066 8028 FORMAT(3X,I2, 1067 $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )') 1068 8029 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' ) 1069 8030 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' ) 1070 8031 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' ) 1071 8032 FORMAT(3X,I2, 1072 $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )') 1073 8033 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' ) 1074 8034 FORMAT(3X,I2, 1075 $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )') 1076 8035 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' ) 1077 8036 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' ) 1078 8037 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' ) 1079 8038 FORMAT(3X,I2, 1080 $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )') 1081 8039 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' ) 1082 8040 FORMAT(3X,I2, 1083 $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )') 1084* 1085 RETURN 1086* 1087* End of ALAHD 1088* 1089 END 1090